网站建设波斯文,wordpress被刷搜索,wordpress建立多个页面,微信自己怎么创建公众号一#xff0c;Vuex简介
Vuex是Vue.js的状态管理库#xff0c;它通过中心化的状态管理使得组件间的数据共享更加容易。 Vuex包含五个核心属性#xff1a;state、getters、mutations、actions和modules。
Vuex是Vue.js的状态管理库#xff0c;它提供了一种集中式存储管理应…一Vuex简介
Vuex是Vue.js的状态管理库它通过中心化的状态管理使得组件间的数据共享更加容易。 Vuex包含五个核心属性state、getters、mutations、actions和modules。
Vuex是Vue.js的状态管理库它提供了一种集中式存储管理应用程序中所有组件的状态并将其分离到一个可预测的状态容器中。Vuex包括五个核心属性
二Vuex五个核心属性
1state
state定义了应用程序的状态就是我们要管理的数据。 存放应用程序的状态数据所有组件共享。它是Vue实例的data属性的替代品但是通过它存储和管理的状态可以在整个应用程序中实现全局共享即不同的组件可以通过定义的getter和setter访问同一状态数据。
const store new Vuex.Store({state: {count: 0}
})2getters
getters用于获取State中的状态主要用于对state进行逻辑上的组合和应用类似于Vue组件中的计算属性。
const store new Vuex.Store({state: {count: 0},getters: {doubleCount(state) {return state.count * 2}}
})3mutations
mutations用于修改state中的数据是唯一可以修改state的地方。mutations接收state作为第一个参数接收payload作为第二个参数。 用于修改State中的状态只能同步执行。Mutation必须是同步函数因为它们不能处理异步行为异步行为应该放在Action中处理。
const store new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count},add(state, payload) {state.count payload}}
})4actions
actions用于异步操作和提交mutations在actions中可以进行任何异步操作最后再提交到mutations中同步修改state。actions接收context作为第一个参数其中包含了state、getters和commit等属性。
可以包含任意异步操作例如从服务器获取数据可以用Mutation通过提交commit来修改State。
const store new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count}},actions: {incrementAsync(context) {setTimeout(() {context.commit(increment)}, 1000)}}
})5modules
modules用于将store分割成模块每个模块都拥有自己的state、mutation、action、getters和子模块以便提高应用程序的可维护性。
将State、Getter、Mutation、Action模块化便于组件化和模块化开发。
const store new Vuex.Store({modules: {cart: {state: {items: []},mutations: {addItem(state, item) {state.items.push(item)}},actions: {addAsyncItem(context, item) {setTimeout(() {context.commit(addItem, item)}, 1000)}}}}
})使用方法示例
const store new Vuex.Store({modules: {cart: {state: {items: []},mutations: {pushProductToCart (state, payload) {state.items.push({id: payload.id,quantity: 1})}},actions: {addProductToCart ({ state, commit }, product) {const cartItem state.items.find(item item.id product.id)if (!cartItem) {commit(pushProductToCart, product)}}},getters: {cartItems: state {return state.items}}}}
})
这个代码创建了一个包含cart模块的Vuex store对象其中cart模块包含state、mutations、actions和getters四个属性用于管理购物车数据。在addProductToCart action中使用state.items和commit方法来修改cart模块中的数据。在cartItems getter中使用state.items来计算购物车中的商品数量和总价。三Vuex使用方法
使用方法
1安装Vuexnpm install vuex --save
2在main.js中导入Vuex并使用Vue.use()方法注册Vuex。
import Vue from vue
import Vuex from vuex
import App from ./App.vue
Vue.use(Vuex)
const store new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count}}
})
new Vue({store,render: h h(App)
}).$mount(#app)3在组件中使用vuex中的数据和方法。 templatedivpCount: {{ count }}/pbutton clickincrementIncrement/button/div
/template
script
export default {computed: {count() {return this.$store.state.count}},methods: {increment() {this.$store.commit(increment)}}
}
/script4vuex综合案例
下面是一个简单的Vuex使用方法的示例
// 引入Vue和Vuex
import Vue from vue
import Vuex from vuex
Vue.use(Vuex)
// 创建一个Store
const store new Vuex.Store({// 定义Statestate: {count: 0},// 定义Mutationmutations: {increment: state state.count,decrement: state state.count--},// 定义Gettergetters: {evenOrOdd: state state.count % 2 0 ? even : odd},// 定义Actionactions: {incrementIfOdd ({ commit, state }) {if ((state.count 1) % 2 0) {commit(increment)}}}
})
new Vue({el: #app,store,template: divpCount: {{ count }}/ppEven or Odd? {{ evenOrOdd }}/pbutton clickincrementIncrement/buttonbutton clickdecrementDecrement/buttonbutton clickincrementIfOddIncrementIfOdd/button/div,computed: {count () {return this.$store.state.count},evenOrOdd () {return this.$store.getters.evenOrOdd}},methods: {increment () {this.$store.commit(increment)},decrement () {this.$store.commit(decrement)},incrementIfOdd () {this.$store.dispatch(incrementIfOdd)}}
})这个代码创建了一个Vuex Store并定义了State、Mutation、Getter、Action。然后将Store实例与Vue实例关联。在Vue组件中使用计算属性computed和方法methods来访问State、Getter和Action。在方法中使用commit来提交Mutation使用dispatch来分发Action。