如何动态获取状态数组名称 React
How to dynamically get state array name React
如何动态设置状态数组的名称,以便从状态中获取它。
onCheckBoxItemClickList(e, value, path) {
console.log(e.target.checked)
if (e.target.checked) {
//append to array
this.setState({
[path]: this.state.[path].concat([value])
})
} else {
//remove from array
this.setState({
[path]: this.state.[path].filter(function (val) {
return val !== value
})
})
}
}
我知道如何动态设置和获取状态中的密钥,但是当我
尝试做
[path]: this.state.[path].concat([value])
我收到以下错误:
如有任何帮助,我们将不胜感激,
谢谢
您的代码中有一个额外的点(在状态之后):
[path]: this.state.[path].concat([value])
应该是:
[path]: this.state[path].concat([value])
那么每当你想根据之前的状态设置状态时,你应该使用 setState
接受回调,并以 prevState
作为参数。
所以您的代码应该类似于:
onCheckBoxItemClickList(e, value, path) {
console.log(e.target.checked)
if (e.target.checked) {
//append to array
this.setState(prevState => ({
[path]: prevState[path].concat([value])
}))
} else {
//remove from array
this.setState(prevState => ({
[path]: prevState[path].filter(function (val) {
return val !== value
})
}))
}
}
如何动态设置状态数组的名称,以便从状态中获取它。
onCheckBoxItemClickList(e, value, path) {
console.log(e.target.checked)
if (e.target.checked) {
//append to array
this.setState({
[path]: this.state.[path].concat([value])
})
} else {
//remove from array
this.setState({
[path]: this.state.[path].filter(function (val) {
return val !== value
})
})
}
}
我知道如何动态设置和获取状态中的密钥,但是当我 尝试做
[path]: this.state.[path].concat([value])
我收到以下错误:
如有任何帮助,我们将不胜感激, 谢谢
您的代码中有一个额外的点(在状态之后):
[path]: this.state.[path].concat([value])
应该是:
[path]: this.state[path].concat([value])
那么每当你想根据之前的状态设置状态时,你应该使用 setState
接受回调,并以 prevState
作为参数。
所以您的代码应该类似于:
onCheckBoxItemClickList(e, value, path) {
console.log(e.target.checked)
if (e.target.checked) {
//append to array
this.setState(prevState => ({
[path]: prevState[path].concat([value])
}))
} else {
//remove from array
this.setState(prevState => ({
[path]: prevState[path].filter(function (val) {
return val !== value
})
}))
}
}