何时使用派遣

时间:2017-07-17 17:19:17

标签: reactjs redux

我希望在提交表单时使用dispatch,但它给出了一个错误,说它未定义。我不确定我做错了什么。我想知道是否有人能发现错误?

此外,我正在查看其他人的代码,有时他们使用调度,有时他们只是使用this.props,这是更好的,有什么区别?

  submitRenter(e){
    e.preventDefault()
      dispatch(addUser());
  }



  render() {



  return (
    <form>
      <label>
      <input type="text"/>
      </label>

      <button onClick={this.submitRenter} type="submit">Sumbit</button>

    </form>


      )
  }
}

function mapDispatchToProps(dispatch) {
  return {
    actions: bindActionCreators({
      addUser
    }, dispatch)
  };
}


export default connect(
  mapStateToProps,
  mapDispatchToProps
)(RegisterRenter);

1 个答案:

答案 0 :(得分:3)

如果您不提供mapDispatchToProps功能,则connect将使用其默认行为并提供组件this.props.dispatch。如果您执行提供mapDispatch功能,那么它取决于您返回的内容,并且您需要在该返回值中手动包含dispatch。< / p>

&#34;绑定&#34;动作创建者是这样你可以使用它们而不必明确使用dispatch()函数。如果您将动作创建者作为道具传递给未连接到Redux的子项,则此功能特别有用。

我个人建议始终使用connect支持mapDispatch的对象速记语法来绑定动作创建者,甚至更多。举个例子:

import {addUser} from "./userActions";

const actions = {
    addUser
};

class RegisterRenter {
    submitRenter(e) {
        e.preventDefault();
        this.props.addUser();
    }

    // rendering, etc
}

export default connect(mapState, actions)(RegisterRenter);

有关详细信息,请参阅Redux FAQ entry on "why don't I have props.dispatch?"和我的博文Idiomatic Redux: Why use action creators?