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的回答相同