Arrays 在道具中通过redux商店是否未定义?

Arrays 在道具中通过redux商店是否未定义?,arrays,node.js,reactjs,react-router-dom,Arrays,Node.js,Reactjs,React Router Dom,当我从let store=createStore(myReducer)传递存储时在其他组件的道具中,它未定义。当我使用react router dom时,就会发生这种情况,但如果不这样做,它就会正常运行。 路线部分 路线在App组件中 <BrowserRouter> <div> <Route path={"/layout"} component={Home} /> <Route path={

当我从
let store=createStore(myReducer)传递存储时在其他组件的道具中,它未定义。当我使用
react router dom
时,就会发生这种情况,但如果不这样做,它就会正常运行。 路线部分

路线在
App
组件中

<BrowserRouter>
        <div>
            <Route path={"/layout"} component={Home} />
            <Route path={"/form"} component={UserForm} />
            <Route exact  path={"/"} component={this.layout}   />
        </div>
    </BrowserRouter
我在
map
函数中遇到错误

 {this.store.getState().user.map(u => {
       return  <UserDiv name={u.name} age={u.age} location={u.location} gender={u.gender} job={u.job} />;
  })}
{this.store.getState().user.map(u=>{
返回;
})}
错误

无法读取未定义的属性“map”

奇怪的是,当我没有路线的时候,它就来了
提前感谢

首先,为了从商店获取更新状态,您需要像

const unsubscribe = store.subscribe(() => {
    store.getState();
})
因此,它不是一种处理变化的反应方式

其次,当您将store传递给
Layout
组件时,完全有可能您没有
绑定
Layout
函数,因此
此.props.store
未定义

为了使用react方式的Redux,您可以使用Provider和方法

import { Provider } from 'react-redux';
const renderAll = () => {
    console.log("inside render all" ,store);
    ReactDOM.render(
      <Provider store={store}>
          <App />
     </Provider>,
      document.getElementById('root')
    );
}
然后像这样连接车身部件

const mapStateToProps = (state) => {
   user: state.user
}

export default connect(mapStateToProps)(Body)
{this.props.user.map(u => {
       return  <UserDiv name={u.name} age={u.age} location={u.location} gender={u.gender} job={u.job} />;
})}
确保在布局组件中使用连接的车身组件

在此之后,您可以在
Body
组件中使用
user state

const mapStateToProps = (state) => {
   user: state.user
}

export default connect(mapStateToProps)(Body)
{this.props.user.map(u => {
       return  <UserDiv name={u.name} age={u.age} location={u.location} gender={u.gender} job={u.job} />;
})}
{this.props.user.map(u=>{
返回;
})}
如果用户值最初在redux存储中未定义,则需要在Body组件中添加一个复选框,然后才能像这样使用它

{this.props.user && this.props.user.map(u => {
       return  <UserDiv name={u.name} age={u.age} location={u.location} gender={u.gender} job={u.job} />;
})}
{this.props.user&&this.props.user.map(u=>{
返回;
})}

每当我删除
app.get('*',(req,res)=>{res.sendFile(path.join(u dirname,'public/views/index.ejs');)时,我都会做你推荐的更改和另外一件事
从node.js服务器上,反应路由不工作。不知道为什么要使用browserRouter,您需要为任何路由提供index.ejs,这样客户端路由才能生效。但是当我将此路由保持在下面时,我的路由无法正常工作。他们正在给wierd resultAll您的其他路由需要在上面进行配置,我这样做了,然后每当我给任何路由时,它将只“/”它最好使用react redux库来处理。
const mapStateToProps = (state) => {
   user: state.user
}

export default connect(mapStateToProps)(Body)
{this.props.user.map(u => {
       return  <UserDiv name={u.name} age={u.age} location={u.location} gender={u.gender} job={u.job} />;
})}
{this.props.user && this.props.user.map(u => {
       return  <UserDiv name={u.name} age={u.age} location={u.location} gender={u.gender} job={u.job} />;
})}