Vue Vuex 学习

简介: Vue Vuex 学习

main.js

``` import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store'


Vue.config.productionTip = false


// vuex 动态注册一个 modules store.registerModule('c', { state: { text: 3 } })


// vuex 动态解绑一个 modules // store.unregisterModule('c')


// vuex 监听一个指定字段是否发生变化 // store.watch((state) => state.count + 1, (newCount) => { // store.watch((state) => state.count, (newCount) => { // console.log('new count watch', newCount) // })


// // vuex 拿到所有 mutation 的变化 // store.subscribe((mutation, state) => { // // 触动了 mutation 里面的哪个方法 // console.log(mutation.type) // // mutation 里面更新的最新值 // console.log(mutation.payload) // })


// vuex 拿到所有 action 的变化 // store.subscribeAction((action, state) => { // // 触动了 action 里面的哪个方法 // console.log(action.type) // // action 里面更新的最新值 // console.log(action.payload) // })


new Vue({ router, store, render: h => h(App) }).$mount('#app') ```


store - index.js

``` import Vue from 'vue' import Vuex from 'vuex'


Vue.use(Vuex)


// 是否为开发环境 const isDev = process.env.NODE_ENV === 'development'


// 建立一个 Store const store = new Vuex.Store({ // 开启规范检测 strict: isDev, // 定义属性 state: { count: 0, firstName: 'dzm', lastName: 'xyq' }, // 更新(同步),mutations 不能存在异步操作 mutations: { updateCount (state, num) { state.count = num } }, // 更新(异步),actions 允许异步操作 actions: { updateCountAsync (store, data) { setTimeout(() => { store.commit('updateCount', data.num) }, data.time) } }, // 获取计算属性 getters: { fullName (state) { return ${state.firstName} ${state.lastName} } }, // 插件列表 plugins: [ (store) => { console.log('初始化插件列表') } ], // 模块功能 modules: { // 模块A a: { // 默认 vuex 是会把所有的 mutations 放在一个全局的对象中,如果需要根据模块区分,那么需要在模块中配置 namespaced: true // 这样的好处就是,每个模块里面都可以写相同名字的 mutations,如果不声明,那么所有的 mutations 都会在一个对象中,就会命名重复冲突 namespaced: true, state: { text: 1 }, mutations: { updateText (state, text) { // 这里面的 state 就是 a 模块里面的 state 了 state.text = text } }, getters: { // state 当前A模块的 state // getters 当前A模块所有的 getters // rootState 当前父类的 state textPlus (state, getters, rootState) { // 这样就可以直接使用父类中的属性了 return state.text + rootState.count // 同时也可以使用别的模块中的值 // return state.text + rootState.b.text } }, actions: { // add (ctx) { } add ({ state, commit, rootState }) { // 直接调用A模块内的 updateText // commit('updateText', rootState.count) // 直接调用父模块内的 updateCount commit('updateCount', 123, { root: true }) } }, modules: { // 还可以在子模块中继续嵌套模块 } }, // 模块B b: { state: { text: 2 } } } })


export default store ```


App.vue

```


{{count}}

{{fullName}}

{{textA}}

{{textPlus}}

{{textC}}

```


相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
27天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
1天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
26天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
23 1
|
26天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
27 1
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
25天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
29天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
32 1
vue学习第一章
|
29天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
26 1
vue学习第三章
|
29天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
下一篇
DataWorks