gpt4 book ai didi

javascript - 输入上的 onChange 不会使用 setState 更新状态

转载 作者:行者123 更新时间:2023-12-03 00:57:13 25 4
gpt4 key购买 nike

我已经声明存储数组,例如 ['X', 'XL'] 但我的代码不起作用我不知道为什么?

class App extends Component {
state = {
shirtsSize: ['X', 'XL']
}
handleChange = index => e => {
const { shirtsSize } = this.state
this.setState({
[`${shirtsSize[index]}`]: e.target.value
})
}

render() {
const { shirtsSize } = this.state
return (
<div className="App">
<label htmlFor="shirtsSize">Sizes</label>
<button>+</button>

{shirtsSize.map((lang, index) => (
<input
type="text"
name="shirtsSize"
id="shirtsSize"
value={lang}
onChange={this.handleChange(index)}
/>
))}
</div>
)
}
}

无法发现错误在哪里。

最佳答案

this.setState({
[`${shirtsSize[index]}`]: e.target.value
})

您并不是更新shirtSize数组中的数据,而是创建一个新键,例如shortsSize[0]等。您需要像这样更新数组

const value = e.target.value;
this.setState(prevState => ({
shirtsSize: [...prevState.shirtsSize.slice(0, index), value, ...prevState.shirtsSize.slice(index + 1) ]
}))

或者简单地

const shirtsSize = [...this.state.shirtsSize];
shirtsSize[index] = e.target.value
this.setState({
shirtsSize
})

关于javascript - 输入上的 onChange 不会使用 setState 更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52774897/

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