如何在回调中调用 useDispatch

约纳坦·尼尔

我有一个 React 组件,它试图获取一些数据,并onSuccess(result)在成功检索数据后调用回调。

我需要将数据保存到 redux。我创建了正在使用的自定义钩子useDispatch,我正在尝试做这样的事情:

<MyComponent onSuccess = {res => myCustomHook(res)} />

但我收到一个错误,因为无法在回调中调用钩子。

我知道钩子只能在功能组件的顶层调用..那么我怎样才能实现我所需要的呢?

自定义钩子:

    export function useSaveData(type, response)
  {
    if(!type|| !response)
    {
      throw new Error("got wrong parameters for useSaveData");
    }
    let obj= {
      myData1: response.data1,
      myData2: response.data2
    };
    sessionStorage.setItem(type, JSON.stringify(obj));
    const dispatch = useDispatch();
    dispatch(actionCreator.addAction(type, obj));
  }
萨尔多克

父组件可以将调度程序传递给useSaveData如下。

    export const useSaveData = (dispatch) => (type, response) =>
  {
    if(!type|| !response)
    {
      throw new Error("got wrong parameters for useSaveData");
    }
    let obj= {
      myData1: response.data1,
      myData2: response.data2
    };
    sessionStorage.setItem(type, JSON.stringify(obj));
    dispatch(actionCreator.addAction(type, obj));
  }

而父组件就变成了;

function ParentComponent() {
    const dispatch = useDispatch();
    const myCustomHook = useSaveData(dispatch);
    return <MyComponent onSuccess = {res => myCustomHook(ACTION_TYPE, res)} />
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

handleClick函数中的useDispatch

如何使用 UseDispatch Hook 等待 redux 操作的返回响应

应该如何使用 useDispatch 来强制执行类型检查?

如何从redux'connect'迁移到钩子'useDispatch'和'useSelector'?

Redux + Hook在useEffect调用动作中两次使用useDispatch()

在同一组件中多次调用React-Redux的useDispatch()是否可以?

如何使用thunk和useDispatch(react-redux挂钩)从操作中返回承诺?

如何使用功能组件从 Redux 存储中检索数据并避免 useSelector 和 useDispatch

在useEffect()中使用useDispatch()时,动作似乎不会立即被调用

如何将Redux的useSelector和useDispatch挂钩与PropTypes一起使用

如何在回调函数中调用__doPostBack

如何在回调函数中调用继承的函数

如何在模拟函数的回调中调用解析?

如何在formValidation插件中调用验证回调函数?

如何在翻新回调中调用意图?

如何在JavaScript的回调中调用Typescript函数

useDispatch()错误:找不到react-redux上下文值;请确保组件包装在<Provider>中

如何在React with Enzyme中测试由子组件回调调用的组件回调?

useDispatch 并从 react redux 连接

reactRedux.useDispatch 不是函数

回调如何调用?

如何在Java中的回调中获取调用者对象?

如何在同一组件内的回调中在ReactJS中调用函数?

如何在ajax函数中回调`this`

如何在回调中获取实例

如何在回调中访问正确的“ this”?

如何在JS中回调函数

如何在PHP中实现回调?

如何在Android中定义回调?