Javascript 使用动态键名设置对象状态的最佳方法?-反应

Javascript 使用动态键名设置对象状态的最佳方法?-反应,javascript,reactjs,Javascript,Reactjs,我的反应状态如下: this.state = { formInputs: { username: '', password: '', passwordConfirm: '', }, handleChange = () => { const {target: {name, value}} = event; this.setState({ [name as keyof formInputs]: value }); }

我的反应状态如下:

this.state = {
  formInputs: {
    username: '',
    password: '',
    passwordConfirm: '',
  },
  handleChange = () => {
    const {target: {name, value}} = event;
    this.setState({
      [name as keyof formInputs]: value
    });
  }
};
如何将这一行[name as keyof formData]:值更改为JavaScript而不是Typescript?

您可以直接使用

在您的情况下,{formInput:{username:,password:}

this.setState({
    formInput: {
        ...this.state.formInput,
        [name]: value
    }
});
您可以直接使用

在您的情况下,{formInput:{username:,password:}

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

我们可以使用计算属性名概念来动态计算对象属性名。为此,我们需要将表达式放在[]中

当需要处理多个受控输入元素时,可以为每个元素添加一个name属性,并让处理函数根据event.target.name的值选择要执行的操作

为了你的国家

this.setState({
    formInput: {
        ...this.state.formInput,
        [event.target.name]: event.target.value
    }
})

沙盒供您参考:


我们可以使用计算属性名概念来动态计算对象属性名。为此,我们需要将表达式放在[]中

当需要处理多个受控输入元素时,可以为每个元素添加一个name属性,并让处理函数根据event.target.name的值选择要执行的操作

为了你的国家

this.setState({
    formInput: {
        ...this.state.formInput,
        [event.target.name]: event.target.value
    }
})

沙盒供您参考:


我认为可以将formObject初始化为空json,然后

this.state = {formInput: {}}
稍后更改后,您可以设置如下值

this.setState({formInput[event.target.name]: event.target.value})

并有条件地检查this.state.formInput.username?this.state.formInput.username:是否为值

我认为您可以将formObject初始化为空json并

this.state = {formInput: {}}
稍后更改后,您可以设置如下值

this.setState({formInput[event.target.name]: event.target.value})

并有条件地检查this.state.formInput.username?this.state.formInput.username:to value

我已经尝试过了,但是它绑定了表单数据。例如,我控制台表单状态值仍然为空。我认为您应该将handleChange函数从状态中移出我已经尝试过了,但是它绑定了表单数据。例如le I console表单状态值仍然为空。我认为您应该将handleChange函数从状态中删除。请为此或codesandbox演示发布一个。请为此或codesandbox演示发布一个。如果您有表单状态对象,如:state={formInput:{username:,password:},该怎么办你还会这样设置吗?handleOnChange=event=>{this.setState{[event.target.name]:event.target.value}}我对这个问题的答案做了更改。我想我的编辑也和@Burak Gavas回答的一样。如果你有表单状态对象,比如:state={formInput:{username:,password:}您是否仍然像这样设置它handleOnChange=event=>{this.setState{[event.target.name]:event.target.value}我对这个问题的答案做了更改我认为我的编辑也与@Burak Gavas的回答相同