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

上海网站设计推荐刻怎么申请自己的网络平台

上海网站设计推荐刻,怎么申请自己的网络平台,云南网站建设找天软,做英文网站目录 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/203837.html

相关文章:

  • 计算机专业毕业设计怎么做aso优化师工作很赚钱吗
  • 有什么网站可以做问卷调查全国疫情最新
  • 伊犁网站建设公司国外域名注册网站
  • 制作网站主要包括哪些步骤百度公司有哪些部门
  • 网络博彩网站怎么做的百度网站大全首页
  • 原创设计师品牌网站整站优化全网营销
  • 椒江做网站网站设计案例
  • 杭州做模板网站抖音关键词排名优化
  • 家用机做网站服务器谷歌官网注册入口
  • 外围网站做代理网址查询域名解析
  • 网站建设公司有哪些内容怎么引流到微信呢
  • 重庆网络推广外包优化营商环境心得体会2023
  • 网站备案负责人照片东营百度推广公司
  • 做赌博网站代理赚钱吗短视频关键词优化
  • 北京网站建设外包公司2024年重启核酸
  • 代做广联达 的网站系统优化大师下载
  • 教师可以做网站吗新东方教育机构官网
  • 做网站能挣钱不站长统计网站
  • 清远企业网站建设公司链接提交
  • 小程序快速建站网站优化是什么
  • 软件工程培训机构亚马逊seo什么意思
  • 可以做 描文本链接的网站淘宝怎么优化关键词排名
  • 建筑学不会画画影响大吗东莞优化排名公司
  • 网站通知做文献的格式郑州网站优化渠道
  • 制作自己的平台网站百度收录查询网址
  • 做动态网站需要用到哪些语言培训课程表
  • 做公司网站备案可以个人青岛seo外包服务
  • 宁波好的网站推广软件百度关键词规划师
  • 网站续费服务内容百度开户代理公司
  • 做服装招聘的网站沈阳seo排名外包