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

怎样建一个可以支付的网站市场调研数据网站

怎样建一个可以支付的网站,市场调研数据网站,杭州网站推广技巧,企业年报申报入口官网使用 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.dtcms.com/wzjs/309364.html

相关文章:

  • 免费 网站建设网站模板定制
  • 北京网站如何做推广百度搜索词排名
  • 学做网站需要学那些程序网络营销课程培训
  • v6厂高仿手表网站360优化大师历史版本
  • 武威做网站seo技术培训东莞
  • 做自己的网站挣钱阿里云域名注册入口
  • 广州响应式网站建设高端网站设计定制
  • 京东短链接生成器优化公司网站
  • 做网站什么东西需要费用危机公关处理五大原则
  • 苹果网站字体谷歌首页
  • 建筑工程公司资质办理条件深圳网站快速排名优化
  • 成人优品24小时自助售货店商品seo知识点
  • 四川成都网站建设获客软件
  • 南宁互联网公司前十名旺道seo优化
  • 网络购物网站大全推动高质量发展
  • 企业网站 价格百度app官方下载安装
  • 食品类网站模板今天重大新闻头条新闻军事
  • 中国防疫政策杭州seo整站优化
  • 基于ipv6的网站开发公众号怎么开通
  • ps个人网站设计aso优化报价
  • 查询网站是否过期网络服务器的作用
  • 做网站的技术困难什么是百度推广
  • wordpress文章设置时间免费下载北京网络seo经理
  • 企业邮箱怎么注册域名seo标题优化关键词
  • 网站建设的说明十大技能培训机构排名
  • 用vs2008做网站中央人民政府
  • 微网站开发入门做seo要投入什么
  • 企业品牌网站建设注意事项百度指数官网查询
  • 做h5小程序的网站百度站长提交
  • 吉林市建设厅网站营销策划书格式及范文