Передать значения от одного модального к другому - PullRequest
2 голосов
/ 28 апреля 2020

Я использую их в одном из моих модалов:

const [startingPoint, setStartingPoint] = useState('');

<Input
  placeholder="Start"
  onChangeText={inputText => setStartingPoint(inputText)}
  value={startingPoint}
/>

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

<AvailableTripsPage
  showAvailableTripsPage={showAvailableTripsPage}
  toggleShowPage={toggleAvailableTripsPage}
  startingPoint={startingPoint}
/>

Это из второго модального сейчас, где значение было передано.

const [newStartingPoint, setNewStartingPoint] = useState(startingPoint);

<Item fixedLabel>
   <Input 
      //onChangeText={text => setNewStartingPoint(text)}
      value={newStartingPoint}
   />

Однако, это не работает должным образом. Иногда значение просто не отображается. Или же значение, которое я ввел в предыдущем модале, не обновляется. Например, если я написал «FirstPoint» в начале и попробовал несколько раз с другими значениями, он по-прежнему показывает «FirstPoint» в новом модале.

1 Ответ

2 голосов
/ 28 апреля 2020

useState принимает аргумент в качестве начального значения. Это означает, что после того, как вы измените его в другом Модале, он выходит из состояния синхронизации c, так как state не обновляется автоматически при изменении аргумента.

Вы можете сделать это, добавив useEffect ловушку, которая будет слушать props.startingProps, корректно обновляя состояние, например:

useEffect(() => {
  setNewStartingPoint(props.startingPoint);
}, [props.startingPoint]);
...