使用表单名称反应表单状态更改

时间:2018-07-17 14:56:48

标签: reactjs forms input state

在输入名称中使用数组时,处理输入更改并进行反应;

handleInputChange(event) {
    const target = event.target;
    const value = target.type === 'checkbox' ? target.checked : target.value;
    const name = target.name;

    this.setState({
        [name]: value
    });

}

如果输入名称是例如,这将不起作用user[email],因为它周围有方阵括号。有谁知道如何使这种通用字符串或数组?

我的状态在下面;

this.state =
{

  name: '',
  type: '',
  user: {
    email: '',
   }

};

1 个答案:

答案 0 :(得分:2)

好的this.setState({ [name]: value });在嵌套状态下实际上是不可行的,因为很难将名称映射到实际值。

您可以创建其他功能,例如handleUserInputChange会在user状态对象中设置值:

handleUserInputChange(event) {
    const { target } = event;
    const value = target.type === 'checkbox' ? target.checked : target.value;
    const { name } = target;

    this.setState(previousState => {
        return { user: { ...previousState.user, [name]: value } };
    });
}