自定义hooks-useInitState

212 阅读1分钟

前言

在开发时我们通常在useEffect中发送请求,获取数据。引入redux、reudx-thunk后每次请求都要使用useEffect、useDispatch、useSelector等,步骤比较繁琐,因此可以封装一个hooks来发送请求,并获取redux中的数据。

具体实现

import { RootAction, RootState } from '@/types/store'
import { useEffect } from 'react'
import { useDispatch, useSelector } from 'react-redux'

const useInitialState = <T extends keyof RootState>(action: () => void, stateName: T) => {
  const state = useSelector((state: RootState) => state[stateName])
  const dispatch = useDispatch()
  useEffect(() => {
    dispatch<RootAction>(action())
  }, [])
  return state
}

export default useInitialState