用vue-cli 与vuex一步一步搭建一个笔记应用(四)
2017-05-13 18:34
603 查看
讲了这么久,终于讲到重点了。将vuex用进我们的笔记应用项目
首先建立一个文件夹用来放vuex吧
按照那篇博文的写法,一个store.js 和 actions.js
再想一下一个笔记应用需要哪些数据呢?
1、笔记数据
2、以及当前活动的笔记数据(即正在编辑的笔记)
好像就只有这个数据了吧。
对于笔记也就只有增删查改,以及设置当前编辑笔记和喜欢的笔记了
这里是store.js的代码,我现在尽量代码风格都偏向ES2015风格了,以前其实很排斥写ES6,觉得现在用的JS挺好的啊,但是一种新技术的出现并不是为了给我们增加工作量,而是为了使得我们的开发更加便捷。因此刻意去学习使用ES2015,反而会减轻我们的开发工作量呢。
这里的项目没有用到getters,写了actions数据分发;
事件分发这里我不是特别的懂:
有dispatch,有commit
commit:
这里的说明是 Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用 context.commit 提交一个 mutation,大概是我对于析构函数了解不清楚吧
文档说Action 通过 store.dispatch 方法触发
于是看了一下这篇文章,原来是vue2.x的变化
http://kingsongao.com/blog/2016/07/24/vuex-v2-%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8F%98%E5%8C%96/
所以说如果写在store里面,就用commit,写在外面就用dispatch(仅仅是自己的猜测)
首先就是针对命名的语义化,主要集中在两个名词上:commit 与 dispatch。
之前的 store.dispatch 变成了现在的 store.commit,但是 store.dispatch 依然可用,但仅仅用来触发某些 action。
这里就懂了actions和getters其实是一样的道理。
getters可以这样获取
然后actions也可以这么写
另一种写法就是先引入mapActions和mapGetters;
在store里面,store.js
因此函数的引入,app.vue
不过这里我遇到了一个问题就是我不知道怎么传参了。
然后我还是采用的mutation传参:
然后基本上完成了所有的功能了,具体代码见我的git
https://github.com/daisyHawen/vuex-notes
接着我又要开始学习es6了,看一下解构赋值究竟是怎么回事
首先建立一个文件夹用来放vuex吧
按照那篇博文的写法,一个store.js 和 actions.js
再想一下一个笔记应用需要哪些数据呢?
1、笔记数据
2、以及当前活动的笔记数据(即正在编辑的笔记)
好像就只有这个数据了吧。
对于笔记也就只有增删查改,以及设置当前编辑笔记和喜欢的笔记了
这里是store.js的代码,我现在尽量代码风格都偏向ES2015风格了,以前其实很排斥写ES6,觉得现在用的JS挺好的啊,但是一种新技术的出现并不是为了给我们增加工作量,而是为了使得我们的开发更加便捷。因此刻意去学习使用ES2015,反而会减轻我们的开发工作量呢。
Vue.use(Vuex) /*定义数据*/ const state = { notes: [], activeNote: {} } /*定义方法*/ const mutations = { // 添加笔记 ADD_NOTE: state => { const newNote = { text: 'new note', favorite: false, header: 'newNote' } state.notes.push(newNote), state.activeNote = newNote }, //编辑笔记 EDIT_NOTE: (state, text) => { state.activeNote.text = text; }, //删除笔记 DELETE_NOTE: (state) => { state.notes.$remove(state.activeNote); state.activeNote = state.notes[0]; }, //标记favorite TOGGLE_FAVORTE: (state) => { state.notes.favorite = !state.activeNote.favorite; }, //设置活动笔记 SET_ACTIVE_NOTE: (state, note) => { state.activeNote = note; } } const store = new Vuex.Store({ state, mutations });
这里的项目没有用到getters,写了actions数据分发;
事件分发这里我不是特别的懂:
有dispatch,有commit
const actions = { editNote({ dispatch }, e) { dispatch('EDIT_NOTE', e.target.value) }, }
commit:
actions: { increment ({ commit }) { commit('increment') } }
这里的说明是 Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用 context.commit 提交一个 mutation,大概是我对于析构函数了解不清楚吧
文档说Action 通过 store.dispatch 方法触发
于是看了一下这篇文章,原来是vue2.x的变化
http://kingsongao.com/blog/2016/07/24/vuex-v2-%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8F%98%E5%8C%96/
所以说如果写在store里面,就用commit,写在外面就用dispatch(仅仅是自己的猜测)
首先就是针对命名的语义化,主要集中在两个名词上:commit 与 dispatch。
之前的 store.dispatch 变成了现在的 store.commit,但是 store.dispatch 依然可用,但仅仅用来触发某些 action。
这里就懂了actions和getters其实是一样的道理。
getters可以这样获取
computed:{ count(){ return this.$store.state.count }, notes(){ return this.$store.state.notes } },
然后actions也可以这么写
methods: { increment () { this.$store.commit('increment') }, decrement () { this.$store.commit('decrement') } }
另一种写法就是先引入mapActions和mapGetters;
import {mapActions,mapGetters} from 'vuex'
在store里面,store.js
const actions = { updateActiveNote: ({ commit }, payload) => { commit('SET_ACTIVE_NOTE', payload) }, addNote: ({ commit }) => { commit('ADD_NOTE') }, deleteNote: ({ commit }, note) => { commit('DELETE_NOTE', note) }, toggleFavorite: ({ commit }) => { commit('TOGGLE_FAVORTE') } }
因此函数的引入,app.vue
methods:mapActions(['updateActiveNote'])
不过这里我遇到了一个问题就是我不知道怎么传参了。
然后我还是采用的mutation传参:
this.$store.commit('SET_ACTIVE_NOTE', note)
然后基本上完成了所有的功能了,具体代码见我的git
https://github.com/daisyHawen/vuex-notes
接着我又要开始学习es6了,看一下解构赋值究竟是怎么回事
相关文章推荐
- 用vue-cli 与vuex一步一步搭建一个笔记应用(一)
- 用vue-cli 与vuex一步一步搭建一个笔记应用(三)
- 用vue-cli 与vuex一步一步搭建一个笔记应用(二)
- 用Vue搭建一个应用盒子(一):todo-list
- VUE 学习笔记 从零开始一步一步构建 VUE 单页应用(一)
- 使用vue-cli快速搭建大型单页应用
- 使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
- VUE系列一:VUE入门:搭建脚手架CLI(新建自己的一个VUE项目)
- vue2.0项目笔记系列(1)——搭建Vue脚手架(vue-cli)
- 新版vue-cli搭建多页应用2
- VUE 学习笔记 从零开始一步一步构建 VUE 单页应用(三)
- Vue笔记3 vue-cli单页面应用与路由设置
- 用Go+Vue.js快速搭建一个Web应用(初级demo)
- 新版vue-cli搭建多页面应用
- 基于vue-cli网上商城项目实战开发——搭建一个完整的SPA项目开发框架(一)
- VUE 学习笔记 从零开始一步一步构建 VUE 单页应用(四)
- VUE 学习笔记 从零开始一步一步构建 VUE 单页应用(二)
- 用Vue搭建一个应用盒子(二):datetime-picker
- 详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
- 使用Vue-cli搭建多页面应用时对项目结构和配置的调整