如何获取存储在 react/redux 中的引用?
How to get reference to store in react/redux?
在我的 reactjs-universal 组件中我这样写:
const mapStateToProps = (store) => {
return {
cars: store
}
}
export default connect(mapStateToProps)(SearchForm)
在同一个组件中,我想发送一个像这样的动作:
store.dispatch({type: 'SHOWDETAIL', data: 'hi'});
当这是 运行 我得到:
Uncaught TypeError: _create2.default.dispatch is not a function
是否可以在我的组件中以某种方式获取对商店的引用,以便我可以分派操作?
connect
将以状态而不是商店作为参数调用 mapStateToProps
。
在您的情况下,您似乎不需要对商店的引用,使用 connect 将调度映射到道具就足够了。
const mapStateToProps = (store) => {
return {
cars: store
}
}
const mapDispatchToProps = dispatch => {
return {
action : () => dispatch({
type : 'ACTION_NAME'
})
}
}
export default connect(mapStateToProps, mapDispatchToProps)(SearchForm)
如果您真的想要商店,您应该从创建它的地方导出它,然后在需要的地方导入它,connect
的目的不是通过商店。
您获得的不是对商店对象的引用,而是对商店内部状态的引用。 connect 函数的第二个参数是 mapDispatchToProps。这使您可以访问调度功能。
在我的 reactjs-universal 组件中我这样写:
const mapStateToProps = (store) => {
return {
cars: store
}
}
export default connect(mapStateToProps)(SearchForm)
在同一个组件中,我想发送一个像这样的动作:
store.dispatch({type: 'SHOWDETAIL', data: 'hi'});
当这是 运行 我得到:
Uncaught TypeError: _create2.default.dispatch is not a function
是否可以在我的组件中以某种方式获取对商店的引用,以便我可以分派操作?
connect
将以状态而不是商店作为参数调用 mapStateToProps
。
在您的情况下,您似乎不需要对商店的引用,使用 connect 将调度映射到道具就足够了。
const mapStateToProps = (store) => {
return {
cars: store
}
}
const mapDispatchToProps = dispatch => {
return {
action : () => dispatch({
type : 'ACTION_NAME'
})
}
}
export default connect(mapStateToProps, mapDispatchToProps)(SearchForm)
如果您真的想要商店,您应该从创建它的地方导出它,然后在需要的地方导入它,connect
的目的不是通过商店。
您获得的不是对商店对象的引用,而是对商店内部状态的引用。 connect 函数的第二个参数是 mapDispatchToProps。这使您可以访问调度功能。