如何理解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 相关文章推荐
深入了解Vue3模板编译原理
Nov 19 Vue.js
vue的hash值原理也是table切换实例代码
Dec 14 Vue.js
vue实现图片裁剪后上传
Dec 16 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
详解实现vue的数据响应式原理
Jan 20 Vue.js
vue如何使用rem适配
Feb 06 Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
vue 给数组添加新对象并赋值
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
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
普通大学毕业生自荐信
2013/11/04 职场文书
初中语文教学反思
2014/02/02 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
给老婆的道歉信
2015/01/20 职场文书
客房部经理岗位职责
2015/02/02 职场文书
个人工作表现自我评价
2015/03/06 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
合同纠纷调解书
2015/05/20 职场文书