使用Vuex实现数据共享

在这里插入图片描述

Vuex是什么?

官方定义

  • Vuex是一个专门为Vue.js应用程序开的状态管理模式
  • 它采用集中式存储管理应用的所有组件的状态
  • 并以相应的规则保证以一种可预测的方式发生变化

个人理解

  • 所有组件的数据的静态数据区(类似于Java类的静态属性,组件好比 类的实例)

Vuex的组成(瞅上图)

  • State——数据仓库
  • getter——用来获取数据
  • Mutation——用来修改数据
  • Action——用来提交mutation

Vuex做什么?

  • 多个视图或组件的同一数据共享(Java的static)
  • 大中型应用

Vue的组件的数据传递

Vuex怎么用?

步骤

  • 安装vuex包:
 npm install vuex
  • 创建vuex实例:
new Vuex.store()`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用vuex实现记事本可以实现数据的集中管理和状态的共享。下面是一个使用vuex实现记事本的示例: 1. 首先,在项目中安装vuex: ```shell npm install vuex --save ``` 2. 创建一个store.js文件,用于定义vuex的状态和操作: ```javascript import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { events: [] // 记事本事件列表 }, mutations: { addEvent(state, event) { state.events.push(event) }, toggleEventStatus(state, index) { state.events[index].completed = !state.events[index].completed } }, actions: { addEvent({ commit }, event) { commit('addEvent', event) }, toggleEventStatus({ commit }, index) { commit('toggleEventStatus', index) } }, getters: { completedEvents: state => { return state.events.filter(event => event.completed) }, uncompletedEvents: state => { return state.events.filter(event => !event.completed) } } }) export default store ``` 3. 在main.js中引入store.js,并将store注入到Vue实例中: ```javascript import Vue from 'vue' import App from './App.vue' import store from './store' new Vue({ store, render: h => h(App) }).$mount('#app') ``` 4. 在组件中使用vuex的状态和操作: ```vue <template> <div> <input v-model="newEvent" @keyup.enter="addEvent"> <ul> <li v-for="(event, index) in uncompletedEvents" :key="index"> <input type="checkbox" v-model="event.completed" @change="toggleEventStatus(index)"> <span :class="{ completed: event.completed }">{{ event.title }}</span> </li> </ul> <h2>已完成事件:</h2> <ul> <li v-for="(event, index) in completedEvents" :key="index"> <input type="checkbox" v-model="event.completed" @change="toggleEventStatus(index)"> <span :class="{ completed: event.completed }">{{ event.title }}</span> </li> </ul> </div> </template> <script> import { mapState, mapActions, mapGetters } from 'vuex' export default { computed: { ...mapState(['events']), ...mapGetters(['completedEvents', 'uncompletedEvents']), }, data() { return { newEvent: '' } }, methods: { ...mapActions(['addEvent', 'toggleEventStatus']) } } </script> <style> .completed { text-decoration: line-through; } </style> ``` 通过以上步骤,你就可以使用vuex实现一个简单的记事本功能了。你可以在输入框中输入事件,按回车键添加事件,勾选复选框切换事件状态。已完成的事件会显示在已完成列表中,未完成的事件会显示在未完成列表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值