113.jotai

作者: wo不是黄蓉 | 来源:发表于2022-09-21 22:50 被阅读0次

    jotai,react状态管理工具,比redux有更小的体积,更少的api,使用简单。
    实践:

    • 快速创建一个react 项目(使用的js模板)
     npx create-react-app jotai-demo
    //安装Jotai
     npm install jotai
    

    使用App.js

     import logo from "./logo.svg";
    import "./App.css";
    import { atom, useAtom } from "jotai";
    
    const counterAtom = atom(0);
    //创建二次依赖
    const doubleAtom = atom((get) => get(counterAtom) * 2);
    function Counter1() {
      const [count, setCount] = useAtom(counterAtom);
      const [doubleCounter] = useAtom(doubleAtom);
      return (
        <div>
          <h3>当前值:{count}</h3>
          <h3>double:{doubleCounter}</h3>
          <button onClick={() => setCount((v) => v + 1)}>加 1</button>
        </div>
      );
    }
    
    function Counter2() {
      const [count, setCount] = useAtom(counterAtom);
      return (
        <div>
          <h3>当前值:{count}</h3>
          {/* <h3>double:{doubleCount}</h3> */}
          <button onClick={() => setCount((v) => v + 1)}>加 1</button>
        </div>
      );
    }
    function App() {
      return (
        <div className="App">
          <header className="App-header">
            <Counter1></Counter1>
            <Counter2></Counter2>
          </header>
        </div>
      );
    }
    
    export default App;
    

    掘金上这边文章举例很好的说明了使用useState+context带来的问题
    jotai和usestate对比
    理解原子式:
    我的理解,由于A B组件都使用了context传递过来的值,因此当context变化时会重新渲染所有依赖的组件。
    使用jotai可以避免类似的问题,因为jotai使用是在每个用在用到的组件中的,因此只有用到的组件才会重新渲染。

    相关文章

      网友评论

          本文标题:113.jotai

          本文链接:https://www.haomeiwen.com/subject/xbviortx.html