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

上海网站设计推荐刻重庆网站seo费用

上海网站设计推荐刻,重庆网站seo费用,哈尔滨市建委官网,dreamweaver绿色版目录 Vuex 简介核心概念与工作流程核心 API 详解模块化开发 (modules)插件(Plugins)与扩展高级技巧与最佳实践 Vuex 简介 Vuex 是 Vue.js 的官方状态管理库,专为复杂应用设计,用于集中管理所有组件的共享状…

目录

  • Vuex 简介
  • 核心概念与工作流程
  • 核心 API 详解
  • 模块化开发 (modules)
  • 插件(Plugins)与扩展
  • 高级技巧与最佳实践

Vuex 简介

Vuex 是 Vue.js 的官方状态管理库,专为复杂应用设计,用于集中管理所有组件的共享状态。它通过严格的规则确保状态变更的可预测性,并与 Vue 的响应式系统深度集成。

为什么需要 Vuex?

  • 跨组件状态共享: 避免通过层层传递 props 或事件管理数据。
  • 状态变更追踪: 通过 DevTools 实现时间旅行调试
  • 异步操作管理: 统一处理 API 请求等异步任务

核心概念与工作流程

1.核心概念

概念描述特点场景
State存储应用状态(唯一数据源)响应式,不可直接修改用户登录信息、全局状态数据
Getters从 State 派生的计算属性(类似组件 computed)可缓存,依赖 State 变化过滤后的列表
Mutation同步修改 State 的方法(需要通过 commit 触发)必须是同步函数更新用户信息
Action处理异步操作,最终通过提交 Mutations 修改 State (通过 dispatch 触发)可包含任意异步操作调用 API 获取数据后更新
Modules将 store 分割为模块,每个模块拥有独立的 state、getters、mutations、actions解决单一状态树臃肿问题用户模块、商品模块

数据流示意图

组件 ->  dispatch -> actions -> commit -> mutations -> modify state -> 响应式更新视图

核心 API 详解

1、创建 Store

// store/index.js
import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);export default new Vuex.store({state:{ count: 0},getters: {doubleCount: state => state.count * 2},mutations: {increment(state, payload){state.count += payload.amount;}},actions: {asyncIncrement({ commit }, payload){setTimeout(()=>{commit('increment', payload)}, 1000);}}	
})

2、组件中访问 State 和 Getters

直接访问

this.$store.state.count;       // 访问 state
this.$store.getters.doubleCount;   // 访问 getter

辅助函数(推荐)

import { mapState, mapGetters } from 'vuex';export default {computed: {// 映射 this.count 为 this.$store.state.count...mapState(['count']),// 重命名或嵌套映射...mapState({customCount: state => state.count,user: state => state.user.profile}),// 映射 Getters...mapGetters(['doubleCount'])}
}

3、触发 Mutations 和 Actions
直接调用

// 提交 Mutation
this.$store.commit('increment', { amount: 18});// 分发 Action
this.$store.dispatch('asyncIncrement', { amount: 15})

辅助函数

import { mapMutations, mapActions } from 'vuex';export default {methods: {// 映射 this.increment() 为 this.$store.commit('increment')...mapMutations(['increment']),// 映射 Action...mapAction(['asyncIncrement']),// 重命名...mapAction({add: 'asyncIncrement'})}
}

4、高级 API

// 监听所有 Mutations 的执行,适用于日志记录或状态持久化
store.subscribeconst unsubscribe = store.subscribe((mutation, state) => {console.log(`Mutation 类型: ${mutation.type}`);console.log('Mutation 载荷:', mutation.payload);console.log('当前 State:', state);
})// 取消监听
unsubscribe()
// 监听 Action 的执行,适用于异步任务监控
store.subscribeActionconst unsubscribeAction = store.subscribeAction({before: (action, state) => { // Action 执行前 }after: (action, state) => { // Action 执行后 }
})
// 替换整个 State 树,常用于状态重置
store.replaceStatestore.replaceState({ count: 100})

模块化开发 (modules)

1、模块化定义

// store/modules/user.js
export default {namespaced: true, // 启用命名空间state:() => ({ name: 'Guest'}),mutations:{setName(state, name){state.name = name;}},actions: {asyncFetchUser({ commit }){// 异步获取用户数据}}
}

2、注册模块

// store/index.js
import user from './modules/user';export default new Vuex.Store({modules: { user }
})

3、访问模块内容

// 访问模块 State
this.$store.state.user.name;// 辅助函数映射
...mapState('user',['name']),
...mapAction('user',['asyncFetchUser'])// 动态绑定模块名
...mapState({userName: (state) => state[this.moduleName].name
})

4、动态模块注册

// 注册模块
store.registerModule('dynamicModule', { // 模块配置 })// 卸载模块
store.unregisterModule('dynamicModule')

插件(Plugins)与扩展

1、内置插件 createLogger

import { createLogger } from 'vuex';const store = new Vuex.Store({plugins: [createLogger()],  // 开发环境使用
})

2、自定义插件示例(状态持久化)

const persistencePlugun = (store) => {// 初始化时读取本地存储const saveState = localStorage.getItem('vuex-state');if(saveState){store.replaceState(JSON.parse(saveState));}// 监听 mutations 自动自动保存store.subscribe((mutation, state) => {localStorage.setItem('vuex-state', JSON.stringify(state))})
}const store = new Vuex.Store({plugins: [persistencePlugun],  // 开发环境使用
})

高级技巧与最佳实践

1、严格模式

const store = new Vuex.Store({strict: process.env.NODE_ENV !== 'production', // 生产环境关闭// ...
});

2、表单处理

<input :value='message' @input='updateMessage'><script>
export default {computed:{message: {get() { return this.$store.state.message }set(value) { this.$store.commit('updateMessage', value)}}}
}
http://www.dtcms.com/wzjs/399747.html

相关文章:

  • 外贸网站开发推广下载百度app到手机上
  • WordPress注册免发邮件优化建议
  • 一个网站主页开发费用关键词seo如何优化
  • 西安网站建设加q479185700网站推广多少钱
  • 东莞公司建设网站网站seo服务商
  • 网站建设主要流程百家号关键词排名优化
  • html5手机网站调用微信分享重庆百度关键词优化软件
  • 舟山网大海网上海seo优化公司kinglink
  • 四川住房建设厅网站国内最开放的浏览器
  • 百度seo站长电商如何推广自己的产品
  • 常见c2c网站有哪些网络运营和网络营销的区别
  • 简易网站建设地产渠道12种拓客方式
  • 学校网站建立知名网页设计公司
  • javawebseo优化实训报告
  • 广告代理商是什么意思合肥seo搜索优化
  • 中线企业网站建设的问题2345浏览器网址
  • 大淘客怎样做网站网上卖产品怎么推广
  • 注册网站在哪里创建产品免费推广网站有哪些
  • 手机网站优化 工具郑州靠谱seo电话
  • 嘉祥县建设局官方网站网络营销环境
  • 武汉网站维护网站搭建
  • 深圳培训公司网站建设百度联盟官网
  • 天津 网站建设网络推广专员
  • 做网站想要个计算器功能网络营销应用方式
  • 企业网站建设网站腾讯广告官网
  • 网站域名后缀的意思站长统计免费下载
  • 怎样给网站做软件测试佛山做网络优化的公司
  • 怎么创建网站免费的今天《新闻联播》回放
  • 热门课程自己做网站百度推广seo怎么学
  • 东莞网上销售网站建设百青藤广告联盟