javascript - 传递一个带有参数的函数

标签 javascript forms reactjs

我有一个通用表单,我想处理用户输入并保存数据。但由于端点和用户类型不同,我应该使用另一个类将保存函数传递给它。 这里我有我的保存功能:

const save = async ({ data, props }) => {
  const { match: { params: { userkey } } } = props;
  const { name, selected } = data;
  await rest.post(
    '/v1/distributor/role',
    { key: name, permissions: selected },
    {
      'x-distributor-key': userkey,
    },
  );
};

export default compose(withProps({ save, getPermissions }))(NewRoles);

使用 userRole 来自另一个文件,并创建一个表单并通过在表单中​​提交来保存功能:

render() {
    const { save } = this.props;
    const { permissions } = this.state;
    console.log(this.props);
    return (
      <div className="col-md-4">
        <Form
          submit={save({ data: this.state, props: this.props })}
          change={this.change}
          nameChange={this.nameChange}
          permissions={permissions}
        />
      </div>
    );
  }
}

这里我将保存函数传递给表单。并期望在提交时单击保存函数,并使用 dataprops 参数触发。但根据日志,保存函数没有以函数风格传递给 Form,它传递了一个 promise ,似乎之前已触发:

submit={save({ data: this.state, props: this.props })}

如何传递保存函数以使用该参数提交

最佳答案

您没有传递函数。实际上,您正在调用该函数,这意味着您正在将该函数的返回值(即 Promise)传递给 submit 属性。因此,改为传递一个函数。改变

submit={save({ data: this.state, props: this.props })}

submit={() => save({ data: this.state, props: this.props })}

关于javascript - 传递一个带有参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617400/

相关文章:

javascript - 出错时显示div

javascript - 使用 lodash 或某些 native 方法检查 array1 是否包含数组中的任何元素?

ios - 如何在 ortuman/SwiftForms 的分段控件中设置默认选择

forms - Symfony 4 表单集合类型 : make FileType element required for new rows only

javascript - React - 为react-i18next调用useTranslation时无效的钩子(Hook)调用

javascript - VueJS 2 Uncaught ReferenceError : _ is not defined with debounce

javascript - 为什么表单元素不应该命名为提交?

php - 如何在表单提交时保留已设置的 GET 参数值?

javascript - 如何在拖动点时降低 Highcharts 中自动轴调整的灵敏度

reactjs - react 网格布局html不更新列