javascript - ownProps 缺少通过 mapStateToProps 添加的 Prop

标签 javascript reactjs redux react-redux

我有以下表格:

let NoteForm = ({handleSave}) => {
  return (
    <form onSubmit={handleSave}>
      <Field component="input" type="text" name="body" />
      <button type="submit">Submit</button>
    </form>
  )
}

和:

const mapStateToProps = (state, ownProps) => {
  return {
    isNew: state.isNew
  }
}

最后:

const mapDispatchToProps = (dispatch, ownProps) => {
  return {
    handleSave: () => {
      dispatch(saveNote(ownProps)) // ownProps does not contain "isNew" prop
    }
  }
}

Prop isNew不包含在 ownProps 中.我希望这是我在这里犯的明显错误,但看不到它。

呈现 NoteForm 的组件是Note并有条件地渲染它:

{ (isNew || isEdit) && <NoteForm /> }

我当然可以将 Prop 作为属性传递进来,但在这一点上我很固执,因为我无法理解为什么我的 Prop 丢失了。我已经尝试将它作为参数传递给我的组件:{handleSave, isNew}但这也不起作用。

作为引用,我的连接是:

NoteForm = connect(
  mapStateToProps,
  mapDispatchToProps
)(NoteForm);

最佳答案

目前我无法对此进行测试,但是 ownProps 是传递给由 connect(...)(YourComponent) 返回的组件的属性,这是有道理的。另一方面,isNewmapStateToProps 直接传递给 YourComponent,因此您无法在 mapDispatchToProps< 中访问它 回调。

在你的应用中的某个地方......

const ReturnedComponent = connect(...)(YourComponent)

render () {

  <ReturnedComponent {...ownProps} />
}

这些 ownProps 可由 mapStateToProps 访问,但不能由 mapDispatchToProps 访问。


查看问题的可能解决方案 here由 redux 的创建者本人推荐。

关于javascript - ownProps 缺少通过 mapStateToProps 添加的 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40868692/

相关文章:

javascript - 除了某些元素,Angular JS 禁用触摸滚动

javascript - 映射数组以设置空元素

javascript - 我在 React 中使用 d3.js 创建了一个折线图。需要对其进行一些自定义,但不知道该怎么做。请看说明和代码

reactjs - 在 React Native 中使用条件渲染的最佳方法

javascript - Mediarecorder : How to support audio recording on Safari, IE 11?

javascript - 滚动一个元素正在影响 Bootstrap 轮播中的另一个元素

javascript - 使用 XMLHTTPRequest 的 OData 批量请求

javascript - React警告错误停止编译应用程序

javascript - 在 React 中更改成员变量的状态不起作用

reactjs - 如何更新 redux 工具包查询中获取的数据?