javascript - 基于另一个字段更新一个字段

标签 javascript reactjs redux-form

作为我的表单的一部分,我有一个用于选择项目的字段和一个按钮,客户单击该按钮以将项目添加到他们的单位列表中。我希望在单位文本字段中显示用户选择的单位列表。我如何实现按钮的 onclick 函数,以便在将其附加到文本框显示的列表之前,它为选择组件获取当前选择的值?我有一个单独的保存按钮,它会获取表单数据并在单击时将其发送到后端。

let EditUserForm = (props) => {
    const { handleSubmit, units } = props;
    return (
        <form onSubmit={handleSubmit}>

            <Field name="units" component="input" type="text" readOnly/> 

            <Field name="unit" component="select" >
            {
                units.map(u => <option value={u} key={u}>{u}</option>)
            }
            </Field>

            <button type="button" onClick={props.updateUserUnits}>Add unit</button>

        </form>
    );
};

最佳答案

您可以在下面的代码中执行类似的操作。这结合了几个 redux-form 概念。

基本上,您想要拦截 select 组件的 onChange 事件,因此您可以将一些逻辑附加到它。

在这种情况下,我们将使用 redux-form 传递的 change 属性。这将允许您更改表单中另一个字段的值。

将它与 formValueSelector 相结合,它允许您从特定的表单字段中获取值。

import React from 'react'
import { connect } from 'react-redux';
import { Field, FieldArray, formValueSelector, reduxForm } from 'redux-form'

const EditUser = (props) => {
    const { change, handleSubmit, selectedUnits = [], units } = props;

    const handleUnitChange = (event, value) => {
      const newUnits = [ ...selectedUnits, value ];

      change('units', newUnits);
    }

    return (
        <form onSubmit={handleSubmit}>
            <Field name="units" component="input" type="text" readOnly/> 

            <Field name="unit" component="select" onChange={handleUnitChange}>
              {units.map(u => <option value={u} key={u}>{u}</option>)}
            </Field>

            <button type="button" onClick={props.sendData}>Add unit</button>
        </form>
    );
};

const form = 'editUserForm';

const EditUserForm = reduxForm({
  form
})(EditUser);

const selector = formValueSelector(form);

export default connect(state => ({
  selectedUnits: selector(state, 'units')
}))(EditUserForm);

关于javascript - 基于另一个字段更新一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43206334/

相关文章:

javascript - Highcharts 柱形图有背景颜色吗?

reactjs - 从导航 Prop 设置初始状态

reactjs - 如何从其他组件更新状态?

reactjs - React+redux-form - 提交后重定向

javascript - 如何获取单个输入字段的值并将每个产品发送到数据库

Javascript-JQuery : sliding menu going left-to-right?

php - HTML5 是否使 Javascript 游戏更安全(更安全)?

reactjs - 在组件之间传递 Props

reactjs - Redux Forms 有时会导致注册/取消注册无限循环

redux-form - 如何使用 react-testing-library 测试 redux-form