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

react 自定义状态管理库

核心实现原理 :
全局状态容器:维护单一状态源
订阅机制:组件订阅状态变化
状态更新调度:通过 Hooks 触发组件重渲染

基础版实现–核心代码
// 1. 创建全局状态存储
const createStore = (initialState) => {let state = initialStateconst listeners = new Set()return {getState: () => state,setState: (newState) => {state = typeof newState === 'function' ? newState(state) : newStatelisteners.forEach(listener => listener()) // 通知所有订阅者},subscribe: (listener) => {listeners.add(listener)return () => listeners.delete(listener) // 返回取消订阅函数}}
}// 2. 创建 React Hook 绑定
const useStore = (store, selector) => {const [state, setState] = useState(() => selector(store.getState()))useEffect(() => {const unsubscribe = store.subscribe(() => {const newState = selector(store.getState())setState(newState) // 只有当选中的状态变化时才更新})return unsubscribe}, [store, selector])return state
}

使用示例

// 创建 store
const counterStore = createStore({ count: 0 })// 在组件中使用
const Counter = () => {const count = useStore(counterStore, state => state.count)return (<div><button onClick={() => counterStore.setState(s => ({ count: s.count - 1 }))}>-</button><span>{count}</span><button onClick={() => counterStore.setState(s => ({ count: s.count + 1 }))}>+</button></div>)
}

相关文章:

  • MySQL中的SELECT FOR UPDATE的用法与原理
  • Linux系统移植11:修改网络驱动
  • Python数据操作
  • 大模型的微调和RAG,是如何选择的?
  • 华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建自己dify钉钉群聊机器人
  • 国产服务器【银河麒麟v10】【CPU鲲鹏920】部署es 7.15.2
  • Android 的AppBarLayout 与LinearLayput的区别
  • AntV G 入门教程
  • maven编译报错java: Compilation failed: internal java compiler error
  • 如何用一台服务器用dify私有部署通用的大模型应用?
  • 小白成长之路-Rsync+sersync实现数据实时同步
  • dotnet core webapi EF 连接mysql数据库
  • 洪千武—华为海外HRBP
  • Ant Design Charts入门教程
  • 【Datawhale组队学习202506】零基础学爬虫 01 初始爬虫
  • 17.group by分组统计
  • 华为OD-2024年E卷-中文分词模拟器[200分] -- python
  • 1、做中学 | 一年级上期 Golang简介和安装环境
  • 基于Android的打印系统的设计与实现
  • PHP vs Python (Flask/Django) vs Java (SpringBoot) vs Vue:2024全栈技术终极对决
  • 网站建设道冲/网上永久视频会员是真的吗
  • 网上购物网站设计/2021年热门关键词
  • 投资理财产品网站建设/广州seo网络优化公司
  • 长沙公司网站开发/百度公司地址
  • 焦作高端网站建设/站长统计幸福宝下载
  • 门户网站是什么意思啊/360优化大师下载