当前位置: 代码网 > it编程>前端脚本>Vue.js > Vue3中的createGlobalState用法及示例详解

Vue3中的createGlobalState用法及示例详解

2024年11月25日 Vue.js 我要评论
1. 基本知识createglobalstate 是vue 3中一种管理全局状态的简便方式,通常用于管理多个组件间共享的状态由 @vueuse/core 提供的,允许创建一个响应式的全局状态,可以在任

1. 基本知识

createglobalstate 是 vue 3 中一种管理全局状态的简便方式,通常用于管理多个组件间共享的状态

由 @vueuse/core 提供的,允许创建一个响应式的全局状态,可以在任意组件中访问和更新

基本的特性如下:

  • 响应式:状态是响应式的,任何组件对状态的访问和修改都会触发相应的更新
  • 简单易用:通过简单的 api 可以创建和管理全局状态
  • 模块化:可以根据需要将状态逻辑分离到不同的模块中
特性有 createglobalstate没有 createglobalstate
全局状态管理方便、简单复杂,通常需要手动管理状态传递
响应式自动响应式更新需要使用 vuex 或 eventbus 等手动实现
代码可读性更清晰、更简洁代码可能更加混乱
模块化可以方便地组织全局状态通常需要复杂的状态管理逻辑

需要确保安装了 @vueuse/core:

2. demo

一般与 usestorage 一起存储在 localstorage 中比较好,否则刷新网页链接的时候会丢失的!

以下是没有存储到localstorage的demo

相关的demo如下:

src/globalstate.js,定义全局状态:

// src/globalstate.js
import { createglobalstate } from '@vueuse/core';
import { reactive } from 'vue';

// 创建全局状态
export const useglobalstate = createglobalstate(() => {
  return reactive({
    count: 0
  });
});

mydemocomponent.vue 中使用全局状态:

<template>
  <div>
    <h2>全局计数器</h2>
    <p>当前计数: {{ globalstate.count }}</p>
    <button @click="increment">增加计数</button>
  </div>
</template>

<script>
import { useglobalstate } from '../globalstate';

export default {
  setup() {
    const globalstate = useglobalstate();

    const increment = () => {
      globalstate.count++;
    };

    return {
      globalstate,
      increment
    };
  }
};
</script>

确保在 app.vue 中使用新的组件:

<template>
  <div id="app">
    <mydemocomponent />
  </div>
</template>

<script>
import mydemocomponent from './components/mydemocomponent.vue';

export default {
  components: {
    mydemocomponent
  }
};
</script>

最终截图如下:

也给一版没有使用的demo:

可能会使用一个简单的 eventbus 或 vuex 来管理全局状态,示例可能如下:

// src/eventbus.js
import { reactive } from 'vue';
import { createapp } from 'vue';

const state = reactive({
  count: 0
});

const eventbus = createapp({});

export const useeventbus = () => {
  return {
    state,
    increment: () => {
      state.count++;
      eventbus.config.globalproperties.$emit('update');
    }
  };
};

在 mydemocomponent.vue 中:

<template>
  <div>
    <h2>全局计数器</h2>
    <p>当前计数: {{ eventbus.state.count }}</p>
    <button @click="increment">增加计数</button>
  </div>
</template>

<script>
import { useeventbus } from '../eventbus';

export default {
  setup() {
    const eventbus = useeventbus();

    return {
      eventbus,
      increment: eventbus.increment
    };
  }
};
</script>

到此这篇关于vue3中的createglobalstate用法及示例详解的文章就介绍到这了,更多相关vue3 createglobalstate用法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com