【发布时间】:2020-10-25 07:49:13
【问题描述】:
我有两个组件,我想在单击按钮时将新值设置为子组件的状态,所以我有以下内容
// parent component
const [clickedSubmit, setClickedSubmit] = useState(false);
const [state, setState] = useState({
..,
val: '',
})
function handleOnSubmit(e) {
e.preventDefault();
setClickedSubmit(true);
console.log(state);
}
// child component
..
useEffect(() => {
if (clickedSubmit) {
setState({
...state,
val: sigRef.current.getTrimmedCanvas().toDataURL("image/png"),
});
}
}, [clickedSubmit])
state.val 在我第一次单击按钮时为空,并且仅在第一次之后才显示值,当我在handleOnSubmit 函数之外进行 console.log 时,它会记录两次,第一次为空,第二次有值。为什么会发生这种情况,我怎样才能只获得 handleOnSubmit 函数内更新值的状态?
【问题讨论】:
-
我觉得这一行有错字:
const [state, setState] = useState({ .., val: '' })你在这里尝试初始化的值是什么? -
空字符串作为
val的初始化值,当用户单击提交btn 时,我试图通过将clickedSubmit更改为@987654330 从子组件调用setState来更改val的值@ 但状态不会在handleOnSubmit函数中立即更新。
标签: reactjs