关于 useSafeDispatch 的参数 dispatch 的类型问题

来源:10-5 用useReducer进行状态管理

buzZ404

2021-05-15

请问老师,useSafeDispatch 的参数 dispatch 的类型为什么是 (...args: T[]) => void。dispatch 不是接收 Partial<State<D>> 吗,您为什么写的接收的是一个数组呢?
我是这样写的,貌似运行没什么问题,希望老师解答!

const useSafeDispatch = <D>(dispatch: (action: Partial<State<D>>) => void) => {
  const mountedRef = useMountedRef();
  return useCallback(
    (action: Partial<State<D>>) =>
      mountedRef.current ? dispatch(action) : void 0,
    [mountedRef, dispatch]
  );
};

写回答

1回答

Nolan

2021-05-16

...args: T[],不是表达传入数组,而是传入单个的参数。举个例子,你以为是这样传参:dispatch([1,2]),其实是这样传参:dispatch(1, 2)


出现这样的结果是因为前面的三个点...,看一下这里吧:https://zhuanlan.zhihu.com/p/32038245

0
0

React17+Hook+TS4 优质实践,仿 Jira 企业级项目

解锁 React17 高阶用法,轻松应对大型复杂长周期项目

2691 学习 · 1236 问题

查看课程