如何动态获取状态数组名称 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
            })
        }))
    }
}