【发布时间】:2020-08-01 16:45:22
【问题描述】:
假设我有一个表单,其中包含一些用户输入字段和标题中的提交按钮,当按下该按钮时会调度几个操作。我使用了一个名为calculate 的函数,它接受存储在number 中的用户输入并更新状态变量result,我想在按下提交标题按钮后将其传递给submitFunction。我正在尝试通过useEffect 实现这一目标,但由于某种原因,result 没有及时更新。
例如,如果我在文本输入字段中输入 99,result 将作为 90 而不是 990 发送到 submitHandler,即文本输入中的一个数字被省略。有人可以告诉我如何修改useEffect 或我的函数调用,以便及时更新number 并将result 的正确值传递给submitHandler?
const ExampleScreen = props => {
const dispatch = useDispatch();
const [number, setNumber] = useState(0);
const [result, setResult] = useState(0);
const calculate = (n) => {
setResult(n * 10);
};
useEffect(() => {
calculate(number); // something not working here!
})
const submitHandler = useCallback(() => {
dispatch(updateList(result));
dispatch(updateTotal(result));
}, [dispatch, result]);
useEffect(() => {
props.navigation.setParams({submit: submitHandler});
}, [submitHandler]);
return (
<View>
<TextInput
keyboardType='numeric'
value={number}
onChangeText={(val) => setNumber(val)}
/>
</View>
);
};
ExampleScreen.navigationOptions = navData => {
const submitFunction = navData.navigation.getParam('submit');
return {
headerRight: () => <HeaderButtons>
<Item
title='Submit'
iconName='md-checkmark'
onPress={submitFunction}
/>
</HeaderButtons>
}
};
【问题讨论】:
标签: javascript reactjs react-native react-hooks use-effect