上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
123下一页
返回列表 发新帖

zustand开发文档

[复制链接]
  • TA的每日心情
    开心
    2023-12-25 06:51
  • 签到天数: 35 天

    [LV.5]常住居民I

    9

    主题

    56

    回帖

    67

    积分

    初级工程师

    积分
    67

    油中3周年

    发表于 2023-10-28 15:10:16 | 显示全部楼层 | 阅读模式
    悬赏10油猫币未解决

    本帖最后由 tansuo 于 2023-10-28 17:53 编辑

    本帖最后由 tansuo 于 2023-10-28 15:38 编辑

    本帖最后由 tansuo 于 2023-10-28 15:20 编辑

    请帮助我找找这个https://fastly.jsdelivr.net/npm/zustand@4.4.1/umd/vanilla.development.js和https://fastly.jsdelivr.net/npm/zustand@4.4.1/umd/middleware.production.js开发文档,中文文档更好,官网应该没提供中文文档,但官网比较全,https://www.jsdelivr.com/package/npm/zustand 好像不全,下面两个代码报各种错误

  • TA的每日心情
    开心
    2023-12-25 06:51
  • 签到天数: 35 天

    [LV.5]常住居民I

    9

    主题

    56

    回帖

    67

    积分

    初级工程师

    积分
    67

    油中3周年

    发表于 2023-10-28 15:31:36 | 显示全部楼层
    本帖最后由 tansuo 于 2023-10-28 15:36 编辑

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>使用zustand库的示例</title>
        <script src="https://fastly.jsdelivr.net/npm/zustand@4.4.1/umd/vanilla.development.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/zustand@4.4.1/umd/vanilla.development.js"></script>


      </head>
      <body>
        <div id="app"></div>
        <script>
          const { create } = zustandVanilla;
          
          const App = () => {
            const useStore = create((set) => ({
              count: 0,
              increment: () => set((state) => ({ count: state.count + 1 })),
            }));

            const store = useStore();
            
            return `
              <div>
                <h1>使用zustand库的示例</h1>
                <p>当前计数:${store.count}</p>
                <button>增加</button>
              </div>
            `;
          };

          const handleIncrement = () => {
            const useStore = create((set) => ({
              count: 0,
              increment: () => set((state) => ({ count: state.count + 1 })),
            }));
            const store = useStore();
            store.increment();
            render(App);
          };
          
          const render = (component) => {
            document.getElementById('app').innerHTML = component();
          };
          
          render(App);
        </script>
      </body>
    </html>

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-25 06:51
  • 签到天数: 35 天

    [LV.5]常住居民I

    9

    主题

    56

    回帖

    67

    积分

    初级工程师

    积分
    67

    油中3周年

    发表于 2023-10-28 15:34:25 | 显示全部楼层
    本帖最后由 tansuo 于 2023-10-28 15:37 编辑

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Zustand Example</title>
    </head>
    <body>
      <h1>Count: <span id="count"></span></h1>
      <button id="incrementBtn">Increment</button>
      <button id="decrementBtn">Decrement</button>

      <script src=" https://fastly.jsdelivr.net/npm/zustand@4.4.1/"></script>
      <script src="https://cdn.jsdelivr.net/npm/zustand@4.4.1"></script>
      <script>
        const createStore = zustand.default;
        const { applyMiddleware } = zustand;

        const initialState = {
          count: 0,
        };

        const increment = () => store.setState((state) => ({ count: state.count + 1 }));
        const decrement = () => store.setState((state) => ({ count: state.count - 1 }));

        const middleware = (set) => (get) => (api) => (fn) => fn(set, get, api);
        const useStore = createStore(
          applyMiddleware(middleware),
          (set) => ({
            ...initialState,
            increment,
            decrement,
          })
        );

        const countElement = document.getElementById('count');
        const incrementBtn = document.getElementById('incrementBtn');
        const decrementBtn = document.getElementById('decrementBtn');

        const store = useStore();

        store.subscribe((state) => {
          countElement.textContent = state.count;
        });

        incrementBtn.addEventListener('click', () => {
          store.increment();
        });

        decrementBtn.addEventListener('click', () => {
          store.decrement();
        });
      </script>
    </body>
    </html>
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-10-28 15:52:03 | 显示全部楼层
    这跟昨天的问题一样...
    这种小库不用看文档的,直接读源代码就可以了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-10-28 16:01:38 | 显示全部楼层
    第一个代码的问题是你用的是vanilla而贴的是zustand的代码
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-10-28 16:09:37 | 显示全部楼层
    第二个问题我更倾向于你要使用打包工具重新打包
    require引入错误,一般来说需要重新打包出来umd格式使用
    当然使用提供require库的方式理论应该也行
    但是兼容性会出很大问题而且操作复杂
    兼容性很难保障
    因为官方没说这部分

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-25 06:51
  • 签到天数: 35 天

    [LV.5]常住居民I

    9

    主题

    56

    回帖

    67

    积分

    初级工程师

    积分
    67

    油中3周年

    发表于 2023-10-28 16:31:07 | 显示全部楼层
    李恒道 发表于 2023-10-28 16:01
    第一个代码的问题是你用的是vanilla而贴的是zustand的代码

    这样写有问题吗?大佬 不过还是报错 <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>使用zustand库的示例</title>
        <script src="https://cdn.jsdelivr.net/npm/zustand@4.4.1/umd/vanilla.development.js"></script>
      </head>
      <body>
        <div id="app"></div>
        <script>
          const create = this.zustandVanilla.createStore;;
          
          const useStore = create((set) => ({
            count: 0,
            increment: () => set((state) => ({ count: state.count + 1 })),
          }));
          
          const App = () => {
            const store = useStore();
            
            return `
              <div>
                <h1>使用zustand库的示例</h1>
                <p>当前计数:${store.count}</p>
                <button onclick="handleIncrement()">增加</button>
              </div>
            `;
          };

          const handleIncrement = () => {
            const store = useStore();
            store.increment();
            render(App);
          };
          
          const render = (component) => {
            document.getElementById('app').innerHTML = component();
          };
          
          render(App);
        </script>
      </body>
    </html>
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-25 06:51
  • 签到天数: 35 天

    [LV.5]常住居民I

    9

    主题

    56

    回帖

    67

    积分

    初级工程师

    积分
    67

    油中3周年

    发表于 2023-10-28 16:34:34 | 显示全部楼层
    本帖最后由 tansuo 于 2023-10-28 18:30 编辑
    李恒道 发表于 2023-10-28 16:09
    第二个问题我更倾向于你要使用打包工具重新打包
    require引入错误,一般来说需要重新打包出来umd格式使用
    当 ...

    第二个代码这样应用可以吗 ?但还是报错


    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Zustand Example</title>
    </head>
    <body>
      <h1>Count: <span id="count"></span></h1>
      <button id="incrementBtn">Increment</button>
      <button id="decrementBtn">Decrement</button>
      <script src="https://fastly.jsdelivr.net/npm/zustand@4.4.1/umd/vanilla.development.js"></script>
      <script src="https://fastly.jsdelivr.net/npm/zustand@4.4.1/umd/middleware.production.js"></script>

      <script>
        const create = this.zustandVanilla.createStore;

        const initialState = {
          count: 0,
        };

        const increment = () => store.setState((state) => ({ count: state.count + 1 }));
        const decrement = () => store.setState((state) => ({ count: state.count - 1 }));

        const middleware = (set) => (get) => (api) => (fn) => fn(set, get, api);
        const useStore = create(
          middleware,
          (set) => ({
            ...initialState,
            increment,
            decrement,
          })
        );

        const countElement = document.getElementById('count');
        const incrementBtn = document.getElementById('incrementBtn');
        const decrementBtn = document.getElementById('decrementBtn');

        const store = useStore();

        store.subscribe((state) => {
          countElement.textContent = state.count;
        });

        incrementBtn.addEventListener('click', () => {
          store.increment();
        });

        decrementBtn.addEventListener('click', () => {
          store.decrement();
        });
      </script>
    </body>
    </html>
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-10-29 03:02:03 | 显示全部楼层
    tansuo 发表于 2023-10-28 16:34
    第二个代码这样应用可以吗 ?但还是报错

    只接受第一个middaren导致的
    你应该用错库了
    跟我上边说的第一个问题貌似是一个原理

    还是尝试先自己打包一份吧
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-10-29 03:03:16 | 显示全部楼层
    tansuo 发表于 2023-10-28 16:34
    第二个代码这样应用可以吗 ?但还是报错

    vanilla跟zustand的本库好像是两个东西
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表