【问题标题】:Props are not passed down to the child component - redux-form/react道具不会传递给子组件 - redux-form/react
【发布时间】:2017-03-23 09:45:51
【问题描述】:

我的道具没有传递给子组件。我有以下父组件NewProject:

...

export class NewProject extends React.PureComponent {

  constructor(props) {
    super(props);
    this.saveProject = this.saveProject.bind(this);
  }

  saveProject = (values) => {
    console.log(values);
  }

  render() {
    return (
      <div>
        <div style={{fontSize: 14}} className="container">
          <NewProjectForm
            onSubmit={this.saveProject}
          />
        </div>
      </div>
    );
  }
}
...

以及子组件NewProjectForm

...
const NewProjectForm = (props) => {
  const {
    handleSubmit,
    pristine,
    reset,
    submitting,
    locale
  } = props;

  console.log(props);

  return (
      <form onSubmit={handleSubmit}>
            <RaisedButton labelColor='#ffffff' type="submit" backgroundColor='#86BFC4' label="Save" />
      </form>
    </Form>
  )
}

export default reduxForm({
  form: 'newProjectForm'
})(NewProjectForm);

当我按下提交按钮时,我收到以下错误:

Uncaught Error: You must either pass handleSubmit() an onSubmit function or pass onSubmit as a prop
    at checkSubmit (eval at ./node_modules/redux-form/lib/reduxForm.js (http://localhost:3000/main.js:5694:1), <anonymous>:133:11)
    at Form.submit (eval at ./node_modules/redux-form/lib/reduxForm.js (http://localhost:3000/main.js:5694:1), <anonymous>:540:74)
    at Object.ReactErrorUtils.invokeGuardedCallback (webpack:///./~/react-dom/lib/ReactErrorUtils.js?:70:16)

发生错误是因为没有传递道具,但为什么会这样 - 我错过了什么?

这是 console.log 的输出...

【问题讨论】:

    标签: reactjs redux-form


    【解决方案1】:

    你用 props 发送 onSubmit 并尝试使用 handleSubmit

      const {
        handleSubmit, // change to onSubmit
        pristine,
        reset,
        submitting,
        locale
      } = props;
    

    【讨论】:

      【解决方案2】:

      这是一个名称不匹配的问题:

      <NewProjectForm
          onSubmit={this.saveProject}
      />
      

      您将其传递为onSubmit 并将其用作handleSubmit

      const {
          handleSubmit, // change this to onSubmit
          pristine,
          reset,
          submitting,
          locale
        } = props;
      

      【讨论】:

      • 我们甚至写了同样的评论)
      • @Andrew haha​​ 不错,同样的解决方案 :)
      猜你喜欢
      • 2017-05-15
      • 1970-01-01
      • 2020-08-09
      • 2016-08-17
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      相关资源
      最近更新 更多