自定义hook的步骤

自定义hook的步骤

 

自定义hook的步骤

1.引入react和自己需要的hook
2.创建自己的hook函数
3.返回一个数组,数组中第一个内容是数据,第二是修改数据的函数
4.将自己定义的hook暴露出去
5.在自己的业务组件中引入并使用

通过自定义hook 模拟数据接口请求功能

utils > useLoadData.js

import React,{useState,useEffect} from 'react';

// 如何模拟数据接口请求功能
export default function useLoadData(){

    const [num,setNum] = useState(0);

    useEffect(() => {
        
        setTimeout(() => {
            console.log('rrr');
            setNum(2)
        }, 1000);
     
    }, [])

    return [num,setNum]

}

通过自定义hook Reducer的使用


import React,{useReducer} from 'react';

const store = {
    age:10
}


// useReducer使用?
// 1.创建 数据仓库store 和 管理者reducer
// 2.通过useReducer(reducer,store)来state和dispatch
const reducer = (state,action) =>{
    switch (action.type) {
        case 'changeAge':
            return {
                ...state,
                age:action.age
            }
            
        default:
            return {
                ...state
            };
    }
}

export default function useLocalReducer(){
  const [state,dispatch] =  useReducer(reducer,store);

  return [
    state,
    dispatch
  ]
}

在组件中引入自定义的hook,并使用

components > useReducer.js

    import React from 'react';
import useLoadData from '../utils/useLoadData';
import useLocalReducer from '../utils/useLocalReducer';

export function Reducer(){

    const [num,setNum] = useLoadData()

   const [state,dispatch] = useLocalReducer()

    return(
        <div onClick={()=> dispatch({
            type:'changeAge',
            age:100
        })}>
            这是一个函数式组件---{num}--{state.age}
        </div>
    )
}

上一篇:hook


下一篇:拼多多工作台HOOK 实现消息自动回复 机器+人工混合回复 并且不显示机器人回复