我有以下文件:
index.js
const store = createStore(...)
ReactDOM.render(<Provider store={store}><BrowserRouter><App/></BrowserRouter></Provider>, document.getElementById('root'));
App
组件:(App.js)
const App = withRouter(connect(mapStateToProps, mapDispatchToProps)(Main))
export default App
那么我如何才能在store.dispatch
组件内部访问Main
?
如果我尝试通过store.dispatch({...})
进行操作,则会得到:
'store'未定义为no-undef
答案 0 :(得分:1)
如果mapDispatchToProps看起来像:
const mapDispatchToProps = dispatch => ({
myAction1: () => dispatch(myAction1())
});
connect(mapStateToProps, mapDispatchToProps)(Main)
...然后在组件中,您可以调用this.props.myAction1()
如果mapDispatchToProps使用bindActionCreators:
const actions = { myAction1, myAction2 };
const mapDispatchToProps = dispatch => bindActionCreators(actions, dispatch);
...然后在组件中,您可以调用this.props.myAction1()
和this.props.myAction2()
如果mapDispatchToProps未定义:
connect(mapStateToProps)(Main)
然后在组件中,您可以访问this.props.dispatch
答案 1 :(得分:0)
调度功能应该可以通过this.props获得 this.props.dispatch()
答案 2 :(得分:0)
您的组件不应直接访问商店-connect
会将其抽象化。
请参阅connect
: Dispatching Actions with mapDispatchToProps
上新的React-Redux文档页面,以获取有关如何处理调度动作的完整说明。