5

在我的 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

是否可以在我的组件中以某种方式获取对商店的引用,以便我可以调度操作?

4

2 回答 2

3

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传递商店的目的。

于 2017-07-04T13:08:14.630 回答
0

您不会获得对 store 对象的引用,而是对 store 内部的状态的引用。connect 函数的第二个参数是 mapDispatchToProps。这使您可以访问调度功能。

于 2017-07-04T13:09:09.250 回答