【发布时间】: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