如何理解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 相关文章推荐
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 Vue.js
vue实现一个获取按键展示快捷键效果的Input组件
Jan 13 Vue.js
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
Vue多选列表组件深入详解
Mar 02 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
Vue-router编程式导航的两种实现代码
Mar 04 Vue.js
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
PHPMyAdmin 快速配置方法
2009/05/11 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
微信小程序实现图片压缩功能
2018/01/26 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
python进程管理工具supervisor使用实例
2014/09/17 Python
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
Python线程之定位与销毁的实现
2019/02/17 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
python3字符串输出常见面试题总结
2020/12/01 Python
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
怎样写好创业计划书的内容
2014/02/06 职场文书
晚归检讨书
2014/02/19 职场文书
小学数学新课改心得体会
2016/01/22 职场文书