React 第三方状态管理库相关 -- Recoil & Zustand 篇

一、Recoil

首先安装依赖:

复制代码
npm install recoil

示例代码:

javascript 复制代码
// src/store/index.js
import { countState } from './counterState';

export {
    countState
};
javascript 复制代码
// src/store/counterState.js
import { atom } from 'recoil';

export const countState = atom({
    key: 'countState',
    default: 0,
});
javascript 复制代码
// src/main.jsx
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'
import { RecoilRoot } from 'recoil';

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <RecoilRoot>
      <App />
    </RecoilRoot>
  </StrictMode>,
)
javascript 复制代码
// src/App.jsx
import React from 'react';
import { useRecoilState } from 'recoil';
import { countState } from './store';

const App = () => {
  const [count, setCount] = useRecoilState(countState);

  return (
    <div>
      <h1>Counter</h1>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
};

export default App;

二、Zustand

首先安装依赖:

javascript 复制代码
npm install zustand

示例代码:

javascript 复制代码
// src/store/index.js
import useCounterStore from "./counterStore";

export { useCounterStore };
javascript 复制代码
// src/store/counterStore.js
import { create } from 'zustand';

const useCounterStore = create((set) => ({
    count: 0,
    increment: () => set((state) => ({ count: state.count + 1 }))
}));

export default useCounterStore;
javascript 复制代码
// src/App.jsx
import React from 'react';
import { useCounterStore } from './store';

const App = () => {
  const counterStore = useCounterStore();
  console.log(counterStore);

  return (
    <div>
      <p>Count: {counterStore.count}</p>
      <button onClick={() => counterStore.increment()}>Increment</button>
    </div>
  );
};

export default App;
相关推荐
开开心心就好8 小时前
课堂随机点名工具,绿色版免安装双击即用
java·服务器·前端·ffmpeg·音视频·perl·symfony
不像程序员的程序媛8 小时前
springboot支持的web容器
前端·spring boot·后端
xiaobaoyu9 小时前
目录合集
前端
han_hanker9 小时前
前端转后端入门实践日志2-nacos
前端
Suprman9 小时前
从 B/S 到 Electron:平面排版套料系统桌面版开发实战
javascript·平面·electron·排序算法
u0111026759 小时前
Vue 3 统一右侧编辑面板:布局、滚动与底部操作区设计
javascript·vue.js·ecmascript
change_fate9 小时前
Vue 3 Composable 函数指南
前端·javascript·vue.js
tryCbest9 小时前
Vue3——第 9 篇:组件通信全攻略(下)——Provide / Inject 与事件总线
前端·javascript·vue.js
lichenyang4539 小时前
技术穿刺怎么做?以企业知识库问答为例,验证风险、方案和投入
前端·后端
PedroQue999 小时前
uni-app x工程化实战:从页面堆到可维护架构
前端·uni-app