useEffect с крюком дает мне предупреждение - PullRequest
1 голос
/ 29 февраля 2020

Я пытаюсь реализовать это:

 useEffect(() => {
    setSingleFieldData({ ...singleFieldData, id: uuidv4() });
  }, []);

в основном, когда загружается компонент, я хочу добавить к singleFieldData идентификатор с помощью uuidv4, я использую useEffect, например "componentDidMount", и использую пустые скобки, но я получаю это предупреждение:

/src/components/FormBuilderPage/utils/FieldGenerator.js
  Line 64:6:  React Hook useEffect has a missing dependency: 'singleFieldData'. Either include it or remove the dependency array. You can also do a functional update 'setSingleFieldData(s => ...)' if you only need 'singleFieldData' in the 'setSingleFieldData' call  react-hooks/exhaustive-deps

добавление singleFieldData к зависимости не работает, потому что я хочу, чтобы он запускался только один раз при рендеринге, что я должен сделать, чтобы избавиться от этого предупреждения

1 Ответ

3 голосов
/ 29 февраля 2020

При обращении к prevState React useState предоставляет версию функции обратного вызова, которую вам необходимо использовать:

useEffect(() => {
    setSingleFieldData(prevSingleFieldData => ({
        ...prevSingleFieldData, id: uuidv4() 
    }));
}, []);

Документы - Функциональные обновления

В некоторых случаях вы можете сделать это при настройке самого исходного состояния.

...