我一直在尝试调用三个函数的JSX点击事件的事情是有三个函数是saveData
clearData
和loadData
内的multiFunc
和前2个函数的工作如预期我可以看到,通过打印出他们的内容在控制台,但第三个函数不工作,直到再次点击调用multiFunc
我想做的是单击JSX事件并单击一下即可执行每个函数。这是我目前为止的代码
const [savedImageData, setSavedImageData] = useState(null);
const saveData = async () => {
if (canvasRef.current) {
const canvas = canvasRef.current;
const dataURL = canvas.toDataURL();
setSavedImageData(dataURL);
setStore(prevStore => [...prevStore, dataURL]);
console.log(dataURL);
console.log('data saved');
}
};
const clearData = () => {
const canvas = canvasRef.current
const context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width, canvas.height);
console.log('data cleared ')
return true
};
const loadData = () => {
if (savedImageData) {
setImageUrl(savedImageData);
console.log(savedImageData)
setIsRetrieveData(true);
setIsDrawing(false); // Reset the drawing state
console.log('data loaded ')
}
};
这是我想调用的函数
const multiFunc = () => {
saveD();
clearData();
loadData();
};
///JSX
<button onClick={multiFunc}>next</button>
我想让它一个接一个地工作在一个点击上我已经尝试了async/await和promise在multiFunc
上,但没有工作我仍然要点击两次才能让loadData
工作,在我看来,我的问题是在loadData
函数的逻辑内部,但你有什么建议?
1条答案
按热度按时间mgdq6dx11#
您可以在
useEffect
中移动load
函数。您的代码没有按预期工作,因为当调用load
时,savedImageData
是null
。useEffect
将确保仅在savedImageData
不是null
时调用load