创建主文件根目录src创建reducer文件夹文件夹创建useDataX.js文件//useDataX.jsimport{createContext,useContext,useReducer}from"react";//?抛出,创建context上下文,可以访问(通过DataContext.provider的值)exportconstDataContext=createContext({});//?定义初始值(创建useReducer使用)constcreatData={loading:false}//?throw,方法可以在普通js中访问exportfunctiondispatchRef(value){return{current:value};}//?Value(改变creatData之后),action:改变了value(dispatch的值)functionreducer(state,action){if(action.type==='loading'){letstateClone={...state}//深拷贝这里需要,可以使用JSON.parse(JSON.stringify(state))转换stateClone.loading=action.valuereturnstateClone}}//?抛出,可以在DataContext导出函数useData(){const{Xdata}=useContext(DataContext);中获取值returnXdata;};//main函数(可以包裹根组件)exportfunctionGlobalLoadingProvider(props){//todouseReducer接受一个reducer函数作为参数,reducer接受两个参数一个是另一个state是action//todo然后返回一个statecount和dispath,count是返回状态中的值,dispatch是可以释放更新状态的事件。//?修改dispath后更新dataArr!const[dataArr,dispatch]=useReducer(reducer,creatData);//?在普通js中访问dispatchRef.current=dispatch;return(
