Реагировать на переменную доступа вне области действия в setState - PullRequest
0 голосов
/ 03 февраля 2020

В настоящее время у меня есть небольшая проблема с изменением существующего состояния.

    const [selectedFormulas, setSelectedFormulas] = useState([]);

    const searchForFormula = (event) => {
        setSelectedFormulas((selectedFormulas) => {
            return selectedFormulas.concat([event.target.value]);
        });
    }

Чего я хочу достичь, так это того, что selectedFormulas становится [selectedFormulas, event.target.value].

Событие находится вне области действия внутри setState, но есть ли способ получить доступ к событию или получить желаемый результат другим способом?

Ответы [ 4 ]

1 голос
/ 03 февраля 2020

Вам не нужно определять стрелку fn c здесь, просто назначьте новое значение для selectedFormulas в fn c состояние обновления setSelectedFormulas ()

    const searchForFormula = (event) => {
        const newValue = event.target.value;
        setSelectedFormulas(selectedFormulas.concat([newValue]));
    }
1 голос
/ 03 февраля 2020

Извлечение значения из события и передача переменной

const searchForFormula = (event) => {
        let value = event.target.value;
        setSelectedFormulas((selectedFormulas) => {
            return selectedFormulas.concat([value]);
        });
    }
0 голосов
/ 03 февраля 2020

    const [selectedFormulas, setSelectedFormulas] = useState([]);

    const searchForFormula = (event) => {
    const {value} = event.target;
        setSelectedFormulas([...selectedFormulas, value]);
    }

0 голосов
/ 03 февраля 2020

Вы можете использовать event.persist ();

const searchForFormula = (event) => { event.persist(); setSelectedFormulas((selectedFormulas) => { return selectedFormulas.concat([event.target.value]); }); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...