如何理解Vue简单状态管理之store模式


Posted in Vue.js onMay 15, 2021

概述

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
    }
}

2. 组件使用 store.js

//A.vue
<template>
    <div class="A">
        我是 A组件
       <ul>
           <li v-for="(todo,index) in todos" 
           :key="index" :class="todo.done?'done':''" @click="setDone(index)">
           {{todo.text}}
           </li>
       </ul>
    </div>
</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>
    <div class="B">
        <div>
            我是 B 组件,在下方输入框输入任务在 A组件 中添加任务
        </div>
        <input type="text" v-model="text">
        <button @click="addTodo">add todo</button>
    </div>
</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>
  <div id="app">
    <A />
    <B />
  </div>
</template>

<script>

import A from './components/A.vue'
import B from './components/B.vue'

export default {
  name: 'App',
  components: {
    A,
    B
  }
}
</script>

3. 实现效果

如何理解Vue简单状态管理之store模式

可以看到,在 A组件 中显示的数据,在 B组件 中进行添加和修改,就是通过数据共享的方式进行数据通信,简单的 store模式 就是这样的运用方式。

以上就是如何理解Vue简单状态管理之store模式的详细内容,更多关于Vue简单状态管理之store模式的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue中音频wavesurfer.js的使用方法
Feb 20 Vue.js
vue单元格多列合并的实现
Nov 26 Vue.js
vue中如何添加百度统计代码
Dec 19 Vue.js
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
如何在vue 中使用柱状图 并自修改配置
Jan 21 Vue.js
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
Vue如何实现组件间通信
May 15 Vue.js
vue基于Teleport实现Modal组件
May 31 Vue.js
vue+iview实现手机号分段输入框
Mar 25 Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
vue实现登陆页面开发实践
May 30 Vue.js
Vue如何实现组件间通信
May 15 #Vue.js
详解Vue的sync修饰符
May 15 #Vue.js
深入理解Vue的数据响应式
May 15 #Vue.js
详解Vue的options
May 15 #Vue.js
vue实现无缝轮播效果(跑马灯)
May 14 #Vue.js
Vue接口封装的完整步骤记录
Vue全家桶入门基础教程
You might like
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
Vue实现点击当前行变色
2020/12/14 Vue.js
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
Python学习入门之区块链详解
2017/07/25 Python
使用python生成目录树
2018/03/29 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
Django 大文件下载实现过程解析
2019/08/01 Python
Python流程控制 if else实现解析
2019/09/02 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
用python写PDF转换器的实现
2020/10/29 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
《美丽的小路》教学反思
2014/02/26 职场文书
小学生安全演讲稿
2014/04/25 职场文书
银行金融服务方案
2014/06/11 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
滞留工资返还协议书
2014/10/19 职场文书
仓管员岗位职责
2015/02/03 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
工作证明格式范文
2015/06/15 职场文书
运动会闭幕式致辞
2015/07/29 职场文书