我正在我的一种模式中使用它们:
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”。
答案 0 :(得分:2)
useState
将其参数作为 initial 值。这意味着,在其他模态中对其进行更改后,由于state
不会根据参数更改自动更新,因此它不同步。
您可以添加一个useEffect
钩子来监听props.startingProps
,正确更新状态,例如:
useEffect(() => {
setNewStartingPoint(props.startingPoint);
}, [props.startingPoint]);