gpt4 book ai didi

javascript - 是否可以使用相同的函数在不同的对象上设置状态

转载 作者:行者123 更新时间:2023-12-01 16:10:08 26 4
gpt4 key购买 nike

我想弄清楚是否有可能捕获输入/复选框 onchange 事件并从同一函数更新状态?这背后的原因是我还在学习 React,想学习如何正确地保存状态。

我试过用以下方式保存状态,但我可能犯了一些错误:

constructor(props) {
super(props);
this.state = {
list: [],
test: {
text: "placeholder",
age: null
},
anotherTest: {
name: "",
info: ""
}
};

handleChange = e => {
var target = e.target.name;
var value = e.target.value;
this.setState({
...this.state,
[target]: value
});
};

和渲染:

 <input name="text" value={this.state.test.text} onChange={e => this.handleChange(e)} />

<input name="name" value={this.state.anotherTest.name} onChange={e => this.handleChange(e)} />

我在这个例子中创建了一个新状态而不是更新目标对象。

整个测试环境:

Edit creact-example-jvb6o

最佳答案

你快到了。只需将其更改为:

this.setState(prevState => ({
anotherTest: {
...prevState.anotherTest,
[target]: 'something'
}
}))

如果你想重用函数,这样做:

handleChange = (e, stateValue) => 
this.setState(prevState => ({
[stateValue]: {
...prevState[stateValue],
[target]: 'something'
}
}))

然后像这样调用它:

e => this.handleChange(e, 'name')

e => this.handleChange(e, 'anotherTest')

关于javascript - 是否可以使用相同的函数在不同的对象上设置状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62323318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com