onChange on input不使用setState更新状态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了onChange on input不使用setState更新状态相关的知识,希望对你有一定的参考价值。
我已声明存储数组,如['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
})
你不是在更新qazxsw poi数组中的数据,而是创建一个像qazxsw poi这样的新键。你需要更新数组
shirtSize
或者干脆
shortsSize[0]
另一答案
好像你需要像:
const value = e.target.value;
this.setState(prevState => ({
shirtsSize: [...prevState.shirtsSize.slice(0, index), value, ...prevState.shirtsSize.slice(index + 1) ]
}))
以上是关于onChange on input不使用setState更新状态的主要内容,如果未能解决你的问题,请参考以下文章
onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法
input file 添加图片预览 绑定onchange执行函数 重复添加不执行onchange函数
react input 输入中文拼音和onChange事件的交互