Как динамически получить имя массива состояний React - PullRequest
0 голосов
/ 10 января 2019

Как я могу динамически установить имя массива в состоянии, чтобы получить его из состояния.

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])

Я получаю следующую ошибку:

error Image

Любая помощь будет принята с благодарностью, Спасибо

1 Ответ

0 голосов
/ 10 января 2019

У вас есть дополнительная точка в вашем коде (после состояния):

[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
            })
        }))
    }
}
...