如何理解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使用vant中的checkbox实现全选功能
Nov 17 Vue.js
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
vue 动态生成拓扑图的示例
Jan 03 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
vue 把二维或多维数组转一维数组
Apr 24 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
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
php实现的RSS生成类实例
2015/04/23 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
js实现扫雷源代码
2020/11/27 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
精通CAD能手自荐书
2014/01/31 职场文书
2014年国培研修感言
2014/03/09 职场文书
婚礼司仪主持词
2014/03/14 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
公司员工手册范本
2015/05/14 职场文书
横空出世观后感
2015/06/09 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers