vue组件keep-alive的原理是什么(如何理解Vue简单状态管理之store模式)
类别:编程学习 浏览量:1004
时间:2022-03-30 09:11:17 vue组件keep-alive的原理是什么
如何理解Vue简单状态管理之store模式目录
- 概述
- 1. 定义 store.js
- 2. 组件使用 store.js
- 3. 实现效果
store 状态管理模式的实现思想很简单,就是定义一个 store 对象,对象里有 state 属性存储共享数据,对象里还存储操作这些共享数据的方法。在组件中将 store.state 共享数据作为 data 的一部分或全部,在对 store.state 对象里的共享数据进行改变时,必须调用 store 提供的接口进行共享数据的更改。
以下以一个简单 todo-list demo 来介绍 store 状态管理模式
1. 定义 store.js//store.js export const store = { state: { todos: [ {text: '写语文作业', done: false}, {text: '做数学卷子', done: false} ] }, addTodo(str){ const obj = {text: str, done: false} this.state.todos.push(obj) }, setDone(index){ this.state.todos[index].done = true } }
//A.vue <template> <li class="A"> 我是 A组件 <ul> <li v-for="(todo,index) in todos" :key="index" :class="todo.done?'done':''" @click="setDone(index)"> {{todo.text}} </li> </ul> </li> </template> <script> import {store} from '../store/store.js' export default { name: 'A', data(){ return store.state }, methods: { setDone(index){ store.setDone(index) } } } </script> <style scoped> .A{ background: red; color: white; padding: 20px; } .A li.done{ background: green; } </style>
//B.vue <template> <li class="B"> <li> 我是 B 组件,在下方输入框输入任务在 A组件 中添加任务 </li> <input type="text" v-model="text"> <button @click="addTodo">add todo</button> </li> </template> <script> import {store} from '../store/store.js' export default { name: 'B', data(){ return { text: '' } }, methods:{ addTodo(){ if(this.text){ store.addTodo(this.text) } } } } </script> <style scoped> .B{ background: yellow; padding: 20px; } </style>
//App.vue <template> <li id="app"> <A /> <B /> </li> </template> <script> import A from './components/A.vue' import B from './components/B.vue' export default { name: 'App', components: { A, B } } </script>
可以看到,在 A组件 中显示的数据,在 B组件 中进行添加和修改,就是通过数据共享的方式进行数据通信,简单的 store模式 就是这样的运用方式。
以上就是如何理解Vue简单状态管理之store模式的详细内容,更多关于Vue简单状态管理之store模式的资料请关注开心学习网其它相关文章!
您可能感兴趣
- vue-cli4开发多页面应用(深入理解Vue-cli4路由配置)
- vue-websocket 组件教程(Vue+express+Socket实现聊天功能)
- vue封装一个功能函数(vue中利用mqtt服务端实现即时通讯的步骤记录)
- vue实现图片上传数据库(vue.js根据图片url进行图片下载)
- vue怎么实现拖动(Vue拖动截图功能的简单实现方法)
- vue自定义列组件(vue自定义表格列的实现过程记录)
- vue设置属性没响应(Vue.$set 失效的坑 问题发现及解决方案)
- vue 动态绑定指令(vue动态绑定图标的完整步骤)
- vue如何导入excel(Vue实现导入Excel功能步骤详解)
- vue中的mapgetter优势(vuex 中辅助函数mapGetters的基本用法详解)
- vue慢动作怎么操作(vue开发之moment的介绍与使用)
- icon图标怎么引入vue(vue引入iconfont图标库的优雅实战记录)
- vue渲染数据的过程(Vue前端高效开发之列表渲染指令)
- vue如何检查数组变化(Vue2中无法检测到数组变动的原因及解决)
- vue子视图里再加routerview(vue router-view的嵌套显示实现)
- vue实现树形结构菜单(vue递归实现三级菜单)
- 涉及3条地铁线路 成都这4座轨道交通站点有新名字了(涉及3条地铁线路)
- 来了 成都轨道交通5条线路刷新 进度条(成都轨道交通5条线路刷新)
- 一部手机两套系统 OPPO Find X3的正确打开方式你知道吗(一部手机两套系统)
- OPPO用户看过来 汇总几个春节实用技巧,轻松搞定多设备联动玩法(汇总几个春节实用技巧)
- 北京旅游攻略(北京旅游攻略5日游及其花费)
- 四川旅游攻略(四川旅游攻略自由行攻略)
热门推荐
- docker 启动rabbitmq(docker安装rabbitmq无法进入管理页面的问题)
- eclipse中tomcat工作原理(Eclipse创建tomcat实现过程原理详解)
- 宝塔mysql怎么设置优化(宝塔面板mysql内存占用高如何优化)
- python中的isi(深入浅析Python 中 is 语法带来的误解)
- mysql对大表千万级如何优化(MySQL 大表的count优化实现)
- vue切换图片效果(Vue.js实现图片切换功能)
- 单元测试中Assert类
- vue2.0自定义指令(vue2实现provide inject传递响应式)
- linux离线安装nfs服务器(linux搭建FastDFS文件服务器的实现步骤)
- linux内核从原理到代码详解(探究一个LED如何入门Linux内核)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9