将带有预定义参数的函数传递给 React 中的 handleSubmit

Posted

技术标签:

【中文标题】将带有预定义参数的函数传递给 React 中的 handleSubmit【英文标题】:Pass a function with predefined parameter to handleSubmit in React 【发布时间】:2021-12-05 09:32:16 【问题描述】:

我在组件“MyEditDataForm”中有一个 redux-form,我正在传递一个函数来处理提交给它,如下所示:

const myHandleSubmit = ( firstInputFieldName, secondInputFieldName ) => 
  console.log(firstInputFieldName);
  console.log(secondInputFieldName);
;

const EditDataPage = () => 
  return (
    <Container>
      <Row>
        <MyEditDataForm
          onSubmit=myHandleSubmit
        />
      </Row>
    </Container>
  );
;

控制台输出:“john”、“doe”

到目前为止一切顺利...现在我想向 myHandleSubmit 添加一个参数,我想将它传递给 myHandleSubmit。像这样:

const myHandleSubmit = ( firstInputFieldName, secondInputFieldName, anotherParameter ) => 
  console.log(firstInputFieldName);
  console.log(secondInputFieldName);
  console.log(anotherParameter);
;

const EditDataPage = () => 
  const aNewParameter = "some info";

  return (
    <Container>
      <Row>
        <MyEditDataForm
          onSubmit=myHandleSubmit( anotherParameter: aNewParameter )
        />
      </Row>
    </Container>
  );
;

点击提交按钮前的输出:undefined, undefined, "some info"

点击按钮后:“错误:您必须通过 handleSubmit() 一个 onSubmit 函数或将 onSubmit 作为道具传递”

如何在不破坏表单提交功能的情况下将新参数传递给 myHandleSubmit?我试图用 bind() 来做到这一点:

<MyEditDataForm
  onSubmit=myHandleSubmit.bind( anotherParameter: aNewParameter )
/>

输出:“john”、“doe”、未定义

我做错了什么?

【问题讨论】:

【参考方案1】:

可能你需要这个:

const myHandleSubmit = ( firstInputFieldName, secondInputFieldName, anotherParameter ) => 
  console.log(firstInputFieldName);
  console.log(secondInputFieldName);
  console.log(anotherParameter);
;

const EditDataPage = () => 
  const aNewParameter = "some info";

  return (
    <Container>
      <Row>
        <MyEditDataForm
          onSubmit=(fields) => myHandleSubmit( ...fields, anotherParameter: aNewParameter )
        />
      </Row>
    </Container>
  );
;

【讨论】:

以上是关于将带有预定义参数的函数传递给 React 中的 handleSubmit的主要内容,如果未能解决你的问题,请参考以下文章

将 onclick 函数作为参数传递给 react/typescript 中的另一个组件

将多个参数传递给 React 中的事件处理程序

将命令行参数传递给调用带有装饰器参数的装饰函数的函数

如果我声明一个带有空参数表的函数,然后将参数传递给它怎么办?

你如何将参数传递给react-intl中的defineMessages?

如何将字典传递给带有关键字参数的函数?