当前位置: 首页 > news >正文

深圳网站开网页制作软件dw论文

深圳网站开,网页制作软件dw论文,wordpress调用jssdk接口,天津网页制作设计使用 useContext useReducer 实现的轻量级状态管理,适合中小型 React 应用使用。 🧠 实现思路 使用 createContext 创建两个上下文:StateContext 和 DispatchContext。用 useReducer 管理状态逻辑。创建一个 Provider 组件包裹应用。提供两…

使用 useContext + useReducer 实现的轻量级状态管理,适合中小型 React 应用使用。


🧠 实现思路

  1. 使用 createContext 创建两个上下文:StateContextDispatchContext
  2. useReducer 管理状态逻辑。
  3. 创建一个 Provider 组件包裹应用。
  4. 提供两个 hooks:useGlobalState()useGlobalDispatch(),分别获取状态和派发方法。

✅ 示例代码

1️⃣ 创建状态管理库:store.js

import React, { createContext, useReducer, useContext } from 'react';// 定义初始状态
const initialState = {count: 0,user: null,
};// 定义 reducer
function reducer(state, action) {switch (action.type) {case 'INCREMENT':return { ...state, count: state.count + 1 };case 'DECREMENT':return { ...state, count: state.count - 1 };case 'SET_USER':return { ...state, user: action.payload };default:throw new Error(`Unknown action type: ${action.type}`);}
}// 创建两个上下文
const StateContext = createContext(null);
const DispatchContext = createContext(null);// 创建 Provider
export function GlobalProvider({ children }) {const [state, dispatch] = useReducer(reducer, initialState);return (<StateContext.Provider value={state}><DispatchContext.Provider value={dispatch}>{children}</DispatchContext.Provider></StateContext.Provider>);
}// 封装 hooks
export function useGlobalState() {const context = useContext(StateContext);if (context === undefined) {throw new Error('useGlobalState must be used within a GlobalProvider');}return context;
}export function useGlobalDispatch() {const context = useContext(DispatchContext);if (context === undefined) {throw new Error('useGlobalDispatch must be used within a GlobalProvider');}return context;
}

2️⃣ 使用示例

App.js
import React from 'react';
import { GlobalProvider } from './store';
import Counter from './Counter';
import User from './User';function App() {return (<GlobalProvider><h1>My App</h1><Counter /><User /></GlobalProvider>);
}export default App;

Counter.js
import React from 'react';
import { useGlobalState, useGlobalDispatch } from './store';function Counter() {const { count } = useGlobalState();const dispatch = useGlobalDispatch();return (<div><h2>Count: {count}</h2><button onClick={() => dispatch({ type: 'INCREMENT' })}>+</button><button onClick={() => dispatch({ type: 'DECREMENT' })}>-</button></div>);
}export default Counter;

User.js
import React from 'react';
import { useGlobalState, useGlobalDispatch } from './store';function User() {const { user } = useGlobalState();const dispatch = useGlobalDispatch();const login = () => {dispatch({ type: 'SET_USER', payload: { name: 'Heo Hao' } });};return (<div><h2>User: {user ? user.name : 'Guest'}</h2><button onClick={login}>Login</button></div>);
}export default User;

🧩 优点

  • 不依赖第三方库(如 Redux、Zustand)
  • 轻量、易用、类型安全(可结合 TS)
  • 适合中小项目
http://www.yayakq.cn/news/492043/

相关文章:

  • 市住房城乡建设网站中国建设银行网站首页企业网银
  • 网站建站公司哪家价钱合理网站域名去哪里备案
  • scatter网站开发长春网站建设方案推广
  • 巩义旅游网站设计公司谷歌推广公司
  • 南阳教育论坛网站建设苏州塔维斯网站建设
  • 做一网站多少钱如何用百度搜自己做的网站
  • html5网站开发原理网站开发 erp系统开发
  • 030159网站建设与维护嵌入式开发板推荐
  • 网站 div襄阳旅游景点网站建设
  • 浏览器打不开网页是什么原因佛山网站的优化
  • 眉山做网站的公司wordpress 当前文章分类id
  • 国内有哪些响应式网站商品详情页面模板
  • 湖南环保设备公司中企动力网站建设技术支持网站轮换图
  • 浦东手机网站建设wordpress视频去广告
  • 猴王水果竞猜网站建设dw网页设计怎么插图片
  • 夏天做那个网站能致富大数据精准获客软件
  • 织梦网站登录企业网站的主要类型有
  • 怎么做交易猫钓鱼网站网站的建设与维护的职责
  • 90设计网站最便宜终身中国房产网
  • 关于建设门户网站的请示南宁seo主管
  • 网站建设流程收费redis wordpress 提速
  • 接送车服务网站怎么做价格划算的网站开发
  • 衡阳做网站的公司如何建立一个网站卖东西
  • 丽江古城区建设局网站wordpress超链接无下划线
  • 某某公司电子商务网站建设与维护wordpress模板下载失败
  • 做企业网站通常哪找素材精准大数据营销公司
  • 福州做网站价格淮北论坛最新招聘
  • 衡水网站建设电话花西子网络营销案例分析
  • 欧美网站源码外国永久网站
  • 千图网网站怎么做seo关键词排名优化价格