Как вызывать функции и в порядке выполнения в ReactJS Hooks - PullRequest
0 голосов
/ 26 апреля 2020

В моем приложении reactjs, в котором у меня есть функциональный компонент, а completed - это состояние, и оно определяется, как показано ниже, с использованием хуков.

const [completed, setCompleted] = useState(false)

Вопрос 1:

Когда компонент рендерится впервые, я хочу вызвать параметризованную функцию checkEmpty без аргументов внутри useEffect, как показано ниже. Эта checkEmpty функция возвратит логическое значение. Но функция ниже не срабатывает внутри useEffect. Я хочу, чтобы код вызывал функцию checkEmpty, и если она возвращает true, состояние completed должно быть установлено на true.

useEffect(() => {
    checkEmpty && setCompleted(true)
}, [])

Вопрос 2:

В приведенном ниже код в событии onChange я пытаюсь вызвать две функции. Я хочу запустить функцию checkEmpty только после завершения функции setValue

onChange={ value=> {
    setValue(index, value),
    checkEmpty(value, index)
}}

Может кто-нибудь, пожалуйста, помогите решить ту же проблему.

1 Ответ

0 голосов
/ 26 апреля 2020

Что касается вашего первого вопроса, по моему мнению предпочтительнее использовать явное if условие , но если вы настаиваете, вам следует вызвать функцию checkEmpty, добавив скобки: checkEmpty().
Без них вы просто проверяете, существует ли checkEmpty. Предполагая, что это так - всегда будет вызываться setCompleted(true).

Во-вторых, если вы хотите, чтобы что-то произошло после изменения состояния, вы можете использовать хук useEffect с обновленной переменной в его второй аргумент.
Так что в вашем примере, если вы установите value:

useEffect(() => {
  checkEmpty(value, index);
}, [value]);
...