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

怎样换网站关键词h5制作

怎样换网站关键词,h5制作,金融服务网站建设内容,旅游网哪个平台好使用 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.dinnco.com/news/25286.html

相关文章:

  • wordpress禁止复制插件北京正规seo搜索引擎优化价格
  • 艺术创意设计图片大全班级优化大师的优点
  • 网站建设沈阳公司泰州seo网站推广
  • 阜阳网站建设哪家好快速排名seo软件
  • 上海城乡建设与交通委员会网站需要优化的网站有哪些?
  • 网站做反向解析郑州网络营销学校
  • 互联网保险行业发展报告搜索引擎优化作业
  • 网站的关键字 设置推广引流图片
  • 番禺网站建设三杰科技石家庄限号
  • 股市行情app搜索引擎简称seo
  • 专业公司网站 南通友情链接吧
  • 资讯网站如何做聚合百度手机端排名
  • 婚纱网站排行seo技巧与技术
  • wordpress表情评论插件郑州seo教程
  • 做网站做的好的公司河南seo和网络推广
  • 用laravel做的网站短视频平台推广
  • wordpress dux5.0徐州seo顾问
  • 做教育导航的网站百度关键词优化大
  • 一个网站怎么做appbing收录提交
  • 中山网站建设公司国内最新消息
  • 做网站余姚网络视频营销平台
  • 网站中的图片展示功能该设计什么深圳aso优化
  • 做网店装修的网站有哪些百度快照什么意思
  • 提供网站制作公司哪家好百度指数是干嘛的
  • wordpress链接下划线seo下拉优化
  • 做海报素材网站优化大师tv版
  • 做产品网站多少钱长沙网站优化seo
  • wordpress邮箱验证配置重庆seo网络优化师
  • 网址大全域名解析seo公司怎么样
  • 网站建设技术外文文献新平台怎么推广