当前位置: 首页 > wzjs >正文

集团网站建设特点 互联网课堂祁阳seo

集团网站建设特点 互联网课堂,祁阳seo,互联网公司怎么盈利,通州区网站建设总结对比表 对比项VuexPiniaAPI 设计区分 mutations/actions仅 state/actions/getters模块化嵌套式配置独立 Store,按需组合TypeScript需手动声明类型原生自动推断代码简洁性冗余(需 commit/dispatch)直接调用方法推荐场景Vue 2 升级项目/严…

总结对比表

对比项VuexPinia
API 设计区分 mutations/actionsstate/actions/getters
模块化嵌套式配置独立 Store,按需组合
TypeScript需手动声明类型原生自动推断
代码简洁性冗余(需 commit/dispatch直接调用方法
推荐场景Vue 2 升级项目/严格规范Vue 3 新项目/灵活简洁

Vue 3 中 Pinia 和 Vuex 的核心区别及代码对比

1. 核心 API 对比

Vuex 示例
// store.js
import { createStore } from 'vuex';export default createStore({state: {count: 0},mutations: {increment(state) {state.count++; // 必须通过 mutations 同步修改}},actions: {incrementAsync({ commit }) {setTimeout(() => {commit('increment'); // 异步操作需调用 commit}, 1000);}},getters: {doubleCount: (state) => state.count * 2}
});
Pinia 示例
// counterStore.js
import { defineStore } from 'pinia';export const useCounterStore = defineStore('counter', {state: () => ({ count: 0 }),actions: {increment() {this.count++; // 直接通过 this 修改状态},async incrementAsync() {setTimeout(() => {this.increment(); // 支持异步操作}, 1000);}},getters: {doubleCount: (state) => state.count * 2}
});

关键差异

  • Pinia 移除 mutations,允许在 actions 中直接修改状态(同步/异步均可)。
  • Vuex 强制区分 mutations(同步)和 actions(异步)。

2. 模块化对比

Vuex 模块化(嵌套式)
// userModule.js
export default {state: { name: 'User' },mutations: { ... }
};// store.js
import userModule from './userModule';export default createStore({modules: {user: userModule // 嵌套式模块}
});
Pinia 模块化(扁平化)
// userStore.js
export const useUserStore = defineStore('user', {state: () => ({ name: 'User' })
});// productStore.js
export const useProductStore = defineStore('product', { ... });

关键差异

  • Vuex 需在单一 Store 中嵌套模块;Pinia 支持独立定义 Store,按需引入。

3. 组件中使用对比

Vuex 组件调用
<template><div>{{ $store.state.count }}</div><button @click="$store.commit('increment')">同步 +1</button><button @click="$store.dispatch('incrementAsync')">异步 +1</button>
</template>
Pinia 组件调用
<template><div>{{ counterStore.count }}</div><button @click="counterStore.increment()">同步 +1</button><button @click="counterStore.incrementAsync()">异步 +1</button>
</template><script setup>
import { useCounterStore } from './counterStore';
const counterStore = useCounterStore();
</script>

关键差异

  • Pinia 通过 Store 实例直接调用方法,代码更简洁;Vuex 需通过 commit/dispatch

4. TypeScript 支持对比

Vuex 类型声明(手动)
// 需手动定义类型
interface State {count: number;
}const store = createStore<State>({state: { count: 0 },mutations: {increment(state) {state.count++; // 需手动确保类型匹配}}
});
Pinia 类型推断(自动)
// 自动推断类型
const counterStore = useCounterStore();
counterStore.increment(); // 方法名和参数自动提示
counterStore.count++;     // 直接修改状态(需配置允许)

关键差异

  • Pinia 原生支持 TypeScript 类型推断;Vuex 需手动配置类型。

5. 响应式解构对比

Pinia 的响应式解构
import { storeToRefs } from 'pinia';const counterStore = useCounterStore();
const { count, doubleCount } = storeToRefs(counterStore); // 解构后仍保持响应式

Vuex 的局限性

  • Vuex 解构 $store.state.count 会失去响应性,需通过 computed 包装。

总结对比表

对比项VuexPinia
API 设计区分 mutations/actionsstate/actions/getters
模块化嵌套式配置独立 Store,按需组合
TypeScript需手动声明类型原生自动推断
代码简洁性冗余(需 commit/dispatch直接调用方法
推荐场景Vue 2 升级项目/严格规范Vue 3 新项目/灵活简洁
http://www.dtcms.com/wzjs/497092.html

相关文章:

  • 免费做章子的网站北京seo公司助力网络营销
  • 做h5找图网站大数据培训包就业靠谱吗
  • 快速做自适应网站最佳的资源搜索引擎
  • 建零售网站还是聚名网域名注册
  • 做衣服接订单的网站片多多可以免费看电视剧吗
  • 群晖套件做网站龙岗网站制作
  • 玛伊网站做兼职加入要多少钱seo手机关键词排行推广
  • 深圳专业网站排名公司我想做app推广代理
  • 济南哪个公司做网站好seo高端培训
  • 西安网站制作西安搜推宝网络中国新闻网发稿
  • 计算机学习网站网络营销的特点不包括
  • 工信部备案信息查询系统培训机构优化
  • 猪价格今日猪价格全国走势天津网站seo设计
  • 如何在网站插做视频百度竞价推广常用到的工具
  • 做销售网站要多少钱营销咨询服务
  • 网站建设制作设计营销 广州百度app免费下载
  • icp网站备案网站首页面设计
  • wordpress球形标签重庆seo服务
  • 述建设一个网站的具体步骤网络上哪里可以做推广
  • 用爱站工具包如何做网站地图邯郸网站优化
  • 网站买卖百度刷排名优化软件
  • 网站注册时间查询优化软件seo排名
  • lamp网站建设河南网站建设定制
  • 呼和浩特网站建设小程序免费b站推广网站2022
  • 哪些网站做推广比较有效果广告投放网
  • 合肥网站推广公司长尾词优化外包
  • 罗湖网站建设多少钱关键词优化推广公司
  • led高端网站建设如何做好网络宣传工作
  • 上海软件开发外包东莞网站优化
  • 青岛代理记账公司排名搜索引擎优化哪些方面