带有钩子不起作用的 redux-saga,无效的钩子调用



我正在尝试使表单上带有钩子的 redux-saga 正常工作,但我找不到一种方法让它按照我想要的方式工作。 控制台告诉我,我只需要在我的功能主体组件中执行钩子,事实上我这样做了,但它不起作用。

我尝试过的事情:

  • 调用组件中的钩子
  • 调用 formik 的 onSubmit 回调中的钩子
  • 尝试返回回调以避免core/notifications/index.ts中我的自定义钩子的即时调用

这是钩子:

function useUpdateNotifications(subscriptions: FormatedSubscription) {
const dispatch = useDispatch();
const formatSubscriptions = valuesIn(subscriptions);
return () =>
dispatch(Events.updateNotifications(formatSubscriptions as Subscription[]));
}

和我称之为的地方:

const formik = useFormik({
initialValues: formatedValues,
onSubmit: (values: FormatedSubscription) => {
Core.updateNotifications(values);
}
});

您可以在此处找到具有相同问题的沙盒 https://codesandbox.io/s/hook-formik-sagas-issues-3pq62

core/notifications/index.tsx

我的通知钩子和所有逻辑都在那里。我有我的传奇,选择器,然后我使用useDispatch(useSelector等(创建我的钩子。例如,当我提交 formik 表单时,useUpdateNotifications钩子(用于调度插入我的一个传奇的事件(在src/index.tsx中调用。但是当我提交表单时,控制台会显示一个警告,告诉我应该在函数组件的主体中调用钩子。这正是我所做的。

你有什么建议吗?

我找到了解决方案,如何以及为什么。以下是解释:

  • 我用一个参数调用我的钩子,而不是通过我的调度将其服从于我的回调。当然,根据文档,我们需要先打电话给 de hook,我的错误是对此的误解。我带着这个解决方案现在运行得很好:
function useUpdateNotifications() {
const dispatch = useDispatch();
return (items: FormatedSubscription) => {
const formatSubscriptions = valuesIn(items);
dispatch(Events.updateNotifications(formatSubscriptions as Subscription[]));
};
}

我能够简单地调用它,而没有打字稿错误问我"期望 1 个参数但得到 0":

const updateNotifications = Core.updateNotifications();
updateNotifications(notifications);

希望将来能帮助某人。

相关内容

  • 没有找到相关文章

最新更新