前言
在开发时我们通常在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