Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Redux mapDispatchToProps中使用组件状态或道具_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 在Redux mapDispatchToProps中使用组件状态或道具

Javascript 在Redux mapDispatchToProps中使用组件状态或道具,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我是一个Redux/React初学者,仍然试图在Redux生态系统中围绕dispatch的组件来完成我的任务。到目前为止,我在组件中发布Redux操作的方式是直接调用组件道具的dispatch()函数: const mapStateToProps = (state) => { return {searchType: state.searchType} } export default connect(mapStateToProps)(SearchForm); 然后,我将一个处理函数

我是一个Redux/React初学者,仍然试图在Redux生态系统中围绕
dispatch
的组件来完成我的任务。到目前为止,我在组件中发布Redux操作的方式是直接调用组件道具的
dispatch()
函数:

const mapStateToProps = (state) => {
  return {searchType: state.searchType}
}

export default connect(mapStateToProps)(SearchForm);
然后,我将一个处理函数绑定到
onClick
事件:

  handleOptionChange(changeEvent) {

    this.setState({selectedOption: changeEvent.target.value});
    this.props.dispatch(setSearchType(this.state.selectedOption));
  }
但是,我一直在尝试实现
mapDispatchToProps
。本文介绍了使用
mapDispatchToProps
而不是简单地使用
This.props.dispatch
的一些好处。然而,我一直在努力寻找一种方法,将我的组件道具或状态集成到
mapDispatchToProps
。我想写这样的东西:

const mapDispatchToProps = (dispatch) => {
  return {
    setSearchType : dispatch(setSearchType(this.props.option))
  }
}
this.props.option
是一个向下传递的道具,用于标识为特定按钮(在此为单选按钮)选择的配置。然后简单地打电话:

  handleOptionChange(changeEvent) {

    this.setState({selectedOption: changeEvent.target.value});
    this.props.setSearchType(); // <--- this line is new
  }
handleOptionChange(changeEvent){
this.setState({selectedOption:changevent.target.value});

这个.props.setSearchType();//只需将您的调度程序定义为一个接受props作为参数的函数:

const mapDispatchToProps = (dispatch) => {
  return {
    setSearchType : option => dispatch(setSearchType(option))
  }
}
然后在调用时传递参数:

this.props.setSearchType(this.props.option)

不过,在每次渲染时都要注意绑定onClick到函数时的性能问题。有关更多信息,请参阅文章。

坦白地说,我看不出真正的问题。您可以自由地将任何数据传递到
mapDispatchToProps
的函数中,包括
这个
对象。哇。这是一个非常简单的答案。我有点不好意思,我没有想到这一点通过。我建议对
mapDispatch
connect(null,{setSearchType})(MyComponent)
使用“对象速记”。