如何理解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实现坐标拾取器功能示例
Nov 18 Vue.js
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
vue下拉刷新组件的开发及slot的使用详解
Dec 23 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
vue 中this.$set 动态绑定数据的案例讲解
Jan 29 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 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
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
零基础php编程好学吗
2019/10/11 PHP
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
JS立即执行函数功能与用法分析
2019/01/15 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
python 删除列表里所有空格项的方法总结
2018/04/18 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
新锐科技Java程序员面试题
2016/07/25 面试题
财务会计毕业生自荐信
2013/11/02 职场文书
创先争优制度
2014/01/21 职场文书
汽车队司机先进事迹材料
2014/02/01 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
村干部任职承诺书
2015/01/21 职场文书
财政局长个人总结
2015/03/04 职场文书
介绍信范文大全
2015/05/07 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书