【问题标题】:React Router / Redux - Connected Component Not Passing Redux State to PropsReact Router / Redux - 连接的组件未将 Redux 状态传递给道具
【发布时间】:2018-08-01 14:36:56
【问题描述】:

我正在将一个组件连接到 redux 存储,但只传递了 react-router 道具。甚至在 mapStateToProps 函数中设置 testVar 都不起作用。

代码简化:

//index.js
import { createStore, applyMiddleware } from 'redux'
import thunk from 'redux-thunk' 
import {initialState} from './reducers/RootReducer';

const store = createStore(RootReducer,initialState, applyMiddleware(thunk));

ReactDOM.render((
    <Provider store={store}>
        <BrowserRouter>
            <App />
        </BrowserRouter>
    </Provider>
    ), document.getElementById('root'));

// App.js
import Home from './path/to/Home-component'
import About from './path/to/About-component'
...
<div>
<Switch>
      <Route exact path='/' component={Home}/>
      <Route path='/uploadsideletters' component={About}/>
      ...
    </Switch>
</div>
...

// About.js
...
  export default connect(mapStateToProps,mapDispatchToProps)(About);

  const mapStateToProps = (state) => ({
    ...state,
      testVar: "test"
  });

  const mapDispatchToProps = (dispatch) => ({
    // empty for now
  });

在渲染方法中将this.props 打印到控制台时,我得到: Object {history: Object, location: Object, params: Object, route: Object, routeParams: Object…} 我的 testVar 不存在。这是为什么呢?

【问题讨论】:

  • 你导入了connect()吗?
  • 也许你导入的是组件,而不是容器。这就是 testVar 属性没有通过的原因。
  • @Dupocas 是 import { connect } from 'react-redux'
  • @VladBîcu 在这种情况下,我只有一个关于组件,就是上面的内容。
  • 感谢帮助,最后是一个简单的错误。我已经更新了问题并发布了答案。

标签: javascript reactjs redux


【解决方案1】:

虽然看起来很简单,但问题是我在mapStateToProps()mapDispatchToProps()之前调用了connect(...)

更改连接部分,现在看起来像:

// About.js
...

  const mapStateToProps = (state) => ({
    ...state,
      testVar: "test"
  });

  const mapDispatchToProps = (dispatch) => ({
    // empty for now
  });

  export default connect(mapStateToProps,mapDispatchToProps)(About);

【讨论】:

  • 如果mapStateToPropsmapDispatchToProps在之后被声明和定义应该会报错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2017-05-15
  • 2021-06-28
  • 1970-01-01
  • 2016-11-26
  • 2016-08-31
  • 1970-01-01
相关资源
最近更新 更多