自定义hook什么时候用,运用自定义hook提取状态逻辑

自定义hook什么时候用,我理解为:当存在这么一个值,你需要在多个地方使用,这时候就可以将此值和它相关的处理逻辑提炼成一个自定义hook,并抛出此值。

形如:定义一个获取参数列表的自定义hook,并将得到的参数列表值存在dataTypeList。

由于各个页面获取的参数值都不一样,在没有抽离前,你需要在每个页面定义state值,并重复多次写同样的逻辑。

现在将这个state值抽离成自定义hook,如下

const useDataTypeList = () => { 
    const [dataTypeList, setDataTypeList] = useState<any>({}) //参数列表 
    const getDataTypeList = (typeArray: Array<string>)=>{ 
        //获取字典参数,假设已封装接口并返回promise
        getDictByCodes(typeArray).then((res) => { 
            //console.log(res) 
            setDataTypeList(res) 
        }) 
    } 
    //甚至更多复杂的逻辑,但是页面通用,抽离出来封装 
    return { 
        dataTypeList, 
        setDataTypeList, 
        getDataTypeList, 
    } 
} 
 
export default useDataTypeList

 在其他组件页面使用时,直接引入

import useDataTypeList from './useDataTypeList'

//在函数组件中声明即用

const {
  dataTypeList,
  setDataTypeList,
  getDataTypeList          
} = useDataTypeList()

这样大大减少了组件中重复逻辑代码,值也可以直接使用。

在需要使用的组件内引用自定义hook,并引入此值,自定义 Hook 是一种重用状态逻辑的机制,所以每次在不同页面使用自定义 Hook 时,其中的所有 state 和副作用都是完全隔离的。

posted @ 2021-12-06 17:01  你风致  阅读(428)  评论(0编辑  收藏  举报