自定义hook的步骤
1.引入react和自己需要的hook 2.创建自己的hook函数 3.返回一个数组,数组中第一个内容是数据,第二是修改数据的函数 4.将自己定义的hook暴露出去 5.在自己的业务组件中引入并使用
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] }
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 ] }
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> ) }