reactjs - 有没有办法在反应中处理 func 道具?
问题描述
当我完成提交注册表并获得成功数据后,我想返回登录表单。
有什么方法可以调用 func 道具onSubmitForm
吗?
main.js
const [goToRegister, setGoToRegister] = useState(false);
const onClickGoToRegister = useCallback(() => {
setGoToRegister(prev => !prev);
}, []);
...
<Modal
title={goToRegister ? "register" : "login"}
visible={showModal}
onCancel={onCancel}
footer={null}
>
{goToRegister ? (
<SignUpForm onClickGoToRegister={onClickGoToRegister} />
) : (
<LogInForm onClickGoToRegister={onClickGoToRegister} />
)}
</Modal>;
如您所见,我将 'onClickGoToRegister' 函数作为道具传递给SignUpForm
.
SignUpForm.js
const onSubmitForm = useCallback(
e => {
e.preventDefault();
dispatch({
type: SIGN_UP_REQUEST,
data: {
name: name,
email: `${email}@${tail}`,
password: password,
phone: `${phoneHead}${phoneBody}${phoneTail}`
}
});
if (signUpErrorReason) {
return message.error(signUpErrorReason);
}
},
[
name,
email,
tail,
password,
passwordCheck,
phoneHead,
phoneBody,
phoneTail,
signUpErrorReason
]
);
解决方案
使该调度程序成为一个承诺或异步函数。如果您使用的是 redux-thunk ,我建议使用redux-promise它将调度转换为承诺
如果该调度动作是异步的,你可以这样做
dispatch()
.then(() => {
props.onClickGoToRegister()
})
或通过使用等待
useCallback(async e => {
// do stuff
await dispach({})
props.onClickGoToRegister()
})
推荐阅读
- reactjs - 您可以更改 Material-ui 中选中 CheckBox 的颜色吗?
- c# - 从 MySQL 数据库获取保存为 BLOB 的图像时参数无效
- python - EMAIL:回复/参考
- java - 使用 Java 中的方法递增和(添加)数组处理
- c# - 返回特定派生类型的对象列表
- python - 在 App Engine 上使用 deferred.defer 时出错
- android - 如何从 Android 中的 Firebase 获取子节点的子节点?
- node.js - Nodejs中的nodemon,有没有办法跟踪更改?
- node.js - 当git clone在一行中时,Node js exec如何在终端中输入公钥的密码
- c# - Visual Studio Code .NET Core 项目显示详细的调试控制台消息