reactjs - onClick 事件中的多个函数
问题描述
我有一个带有onclick event
. 此按钮关闭对话框并更改其值。我有两个功能,一个是更改按钮值handleChange
,另一个是关闭对话框并显示警报以确认onSubmit
。
问题:
我尝试在onClick event
. 执行此操作时,该功能handleChange
有效,而该 功能onSubmit
无效。
onClick={() => {
handleChange();
onSubmit();
}}
所以我尝试在 handleChange
函数内部 调用onSubmit
函数。
const onSubmit = ()=> {
reset();
toast("Default Notification !");
handleChange();
};
onClick={() => {
onSubmit();
}}
我认为这是问题所在:
我的onSubmit
函数有一个关于这个库的警报https://fkhadra.github.io/react-toastify/introduction/并且不能更改为另一个库或简单的alert();
但是,如果我尝试alert();
显示两个函数,但我希望 handleChange();
先运行,然后再运行另一个。
为此,我尝试onSubmit
在内部调用我的函数,handleChange();
但它不起作用。还尝试更改onclick
事件中调用函数的顺序,但它也不起作用
编辑
我的提交功能:
const onSubmit = ()=> {
reset();
alert("Default Notification !");
handleChange();
};
我的 handleChange 函数:
const handleChange = () => {
setChange((prevState) => (prevState === 2 ? 0 : prevState + 1));
};
我的点击事件:
<Button
variant="contained"
onClick={() => {
// handleChange();
onSubmit();
}}
>
解决方案
将要执行的函数或语句包裹在0 毫秒内handleChange()
。setTimeout
这将确保函数或语句在所有同步任务完成执行后执行(在这种情况下handleChange()
)。
const onSubmit = () => {
handleChange();
setTimeout(() => {
alert("Default notification"); // or any other function or statement you want to execute after handleChange().
}, 0);
};
推荐阅读
- python - 为什么它 l[i].pop(0) 是子列表的第二个元素而不是第一个
- http - Chrome 忽略 HTTP WWW-Authenticate 领域
- arrays - Is there a way to create an array using env?
- python - 从值不是 NaN 的多个列创建新列
- linux - 如何从终端启动 gitahed?
- html - 为什么这 2 个 div 不对齐?
- xamarin.forms - 'Error: empty email address' doing postbuild in AppCenter
- r - 如何访问嵌套 R 列表中的数据?
- android - 在 Android > 6 中使用应用名称将图像下载到本地根存储
- c - C指针地址在函数中的空指针初始化时发生变化