当前位置:首页 > VUE

vue实现简单的store

2026-02-20 21:56:41VUE

Vue 实现简单 Store

在 Vue 中实现一个简单的 Store 可以通过多种方式完成,以下是几种常见的方法:

使用 Vue 的响应式系统

通过 Vue 的 reactiveref 创建一个响应式对象作为 Store:

import { reactive } from 'vue';

const store = reactive({
  state: {
    count: 0
  },
  increment() {
    this.state.count++;
  }
});

export default store;

在组件中使用:

import store from './store';

export default {
  setup() {
    return {
      store
    };
  }
};

使用 Vuex 的简化版本

Vuex 是 Vue 的官方状态管理库,但可以手动实现一个简化版本:

vue实现简单的store

import { reactive } from 'vue';

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

  const mutations = {
    increment(state) {
      state.count++;
    }
  };

  return {
    state,
    commit(mutationName) {
      mutations[mutationName](state);
    }
  };
};

export const store = createStore();

在组件中使用:

import { store } from './store';

export default {
  setup() {
    return {
      store
    };
  }
};

使用 Provide/Inject

通过 Vue 的 provideinject 实现全局状态共享:

vue实现简单的store

import { provide, reactive } from 'vue';

const store = reactive({
  count: 0,
  increment() {
    this.count++;
  }
});

export const useStore = () => {
  provide('store', store);
  return store;
};

在子组件中使用:

import { inject } from 'vue';

export default {
  setup() {
    const store = inject('store');
    return {
      store
    };
  }
};

使用 Pinia 的简化版本

Pinia 是 Vue 的轻量级状态管理库,可以手动实现类似功能:

import { reactive } from 'vue';

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

  function increment() {
    state.count++;
  }

  return {
    state,
    increment
  };
};

export default useStore;

在组件中使用:

import useStore from './store';

export default {
  setup() {
    const store = useStore();
    return {
      store
    };
  }
};

选择建议

  • 对于小型应用,使用 reactiveprovide/inject 足够。
  • 需要更严格的状态管理时,可以考虑手动实现类似 Vuex 或 Pinia 的简化版本。
  • 对于大型应用,直接使用 Vuex 或 Pinia 更合适。

标签: 简单vue
分享给朋友:

相关文章

vue为啥能实现监听

vue为啥能实现监听

Vue 实现监听的原理 Vue 的监听能力主要基于其响应式系统,该系统通过数据劫持和依赖收集实现。当数据变化时,系统能自动触发视图更新或执行回调函数。 核心机制:Object.definePrope…

vue实现发表

vue实现发表

Vue 实现发表功能 在 Vue 中实现发表功能通常涉及表单处理、数据绑定和网络请求。以下是实现步骤和代码示例: 表单设计与数据绑定 创建一个表单用于输入发表内容,使用 v-model 进行数据双向…

vue实现星星

vue实现星星

实现星星评分的Vue组件 使用Vue实现星星评分功能可以通过组件化方式完成,以下是一个完整的实现方案: 模板部分 <template> <div class="star-…

vue实现drag

vue实现drag

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过原生 HTML5 的拖拽 API 或第三方库如 vuedraggable 来完成。以下是两种常见方法的实现方式。 使用 HTML5 拖…

vue实现grid

vue实现grid

Vue 实现 Grid 布局的方法 使用 CSS Grid 布局 Vue 可以结合 CSS Grid 布局实现灵活的网格系统。CSS Grid 是现代浏览器原生支持的布局方案,无需额外依赖库。 &l…

vue实现vnc

vue实现vnc

Vue 实现 VNC 客户端 在 Vue 项目中实现 VNC 客户端功能,可以通过集成现有的 VNC 客户端库或组件完成。以下是具体实现方法: 安装依赖库 使用 noVNC 或其他 VNC 客户端…