Установка начального состояния на основе реквизита при использовании useState Hook - PullRequest
3 голосов
/ 13 июня 2019

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

export default (props) => {
  const myValueFromProp = props;
  const [myValue, setMyValue] = useState(myValueFromProp);

  return (
    <Text>
     {myValue}
    </Text>
  );
};

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

В этом конкретном компоненте больше логики, основанной на состоянии, которую я для простоты опустил.

1 Ответ

1 голос
/ 13 июня 2019

Вам нужно подумать о двух вещах.

  1. Нужно ли хранить реквизиты как состояния в дочерних компонентах?(Вам может не понадобиться, если состояние напрямую выводится для реквизита, поскольку вы можете напрямую использовать реквизиты)
  2. Вам нужно обновить состояние, если реквизиты меняются?

, как только вы ответите на двавопросы, вам нужно обновить состояние в useEffect

export default (props) => {
  const myValueFromProp = props;
  const [myValue, setMyValue] = useState(myValueFromProp);
  useEffect(() => {
     setMyValue(props);
  }, [...props])
  return (
    <Text>
     {myValue}
    </Text>
  );
};
...