vuex实现不同组件的数据共享 数据持久化

当我们清除congsole和network后,刷新一次,算是第一次请求,然后切换选项卡,当再回到用户后,没有再请求接口数据,只是加载vuex里的数据,即缓存到list里的数据.

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 在vuex中用于存储数据
var state = {count: 1,list: []
}
// mutations里是放方法,主要改变state里的数
var mutations = {incCount () {state.count++},// 要传值,必须写stateaddList (state, data) {state.list = data}
}
// getter 有点类似计算属性 改变state里面的count数据的时候会触发 getters里面的方法 获取新的值 (基本用不到)
var getters = {computedCount (state) {return state.count * 2}
}
/*
4、 基本没有用
Action 类似于 mutation,不同在于:
Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。
*/
var actions = {// 因此你可以调用 context.commit 提交一个 mutationincMutationsCount (context) {// 执行 mutations 里面的incCount方法 改变state里面的数据context.commit('incCount')}
}
// 实例化vuex的store
const store = new Vuex.Store({state,mutations,getters,actions
})
export default store
<template><!-- 所有的内容要被根节点包含起来 --><div id="home">我是首页组件<button @click="goNews()">通过js跳转到新闻页面</button><mt-button type="default">default</mt-button><br><mt-button type="primary">primary</mt-button><mt-index-list><mt-index-section index="A"><mt-cell title="Aaron"></mt-cell><mt-cell title="Alden"></mt-cell><mt-cell title="Austin"></mt-cell></mt-index-section><mt-index-section index="B"><mt-cell title="Baldwin"></mt-cell><mt-cell title="Braden"></mt-cell></mt-index-section><mt-index-section index="C"><mt-cell title="ccc"></mt-cell><mt-cell title="ccccc"></mt-cell></mt-index-section><mt-index-section index="D"><mt-cell title="DDD"></mt-cell><mt-cell title="DDDD"></mt-cell></mt-index-section><mt-index-section index="Z"><mt-cell title="Zack"></mt-cell><mt-cell title="Zane"></mt-cell></mt-index-section></mt-index-list><hr><h2>调用store里的数据{{this.$store.state.count}}----{{this.$store.getters.computedCount}}</h2><button @click="changeCount()">改变store里的值</button></div>
</template>
<script>
// 引入store
import store from '../Vuex/store'
export default {data () {return {msg: '我是一个home组件'}},// 注册storestore,methods: {goNews () {this.$router.push({ name: 'news' })},changeCount () {// 改变vuex store里的值// 触发vuex store 里的mutations里的incCount方法this.$store.commit('incCount')}}
}
</script>
<style lang="scss" scoped>
</style>
<template><div id="user">我是用户组件<br><v-actionsheet></v-actionsheet><br><mt-button @click.native="flag = true" size="large">选择用户头像</mt-button><mt-actionsheet :actions="actions" v-model="flag"></mt-actionsheet><hr><h2>调用store里的数据{{this.$store.state.count}}</h2><button @click="changeCount()">改变store里的值</button><hr><ul><li v-for="(item,index) in list" :key=index>{{item.title}}</li></ul></div>
</template>
<script>
import store from '../Vuex/store'
import ActionSheet from './ActionSheet.vue'
export default {data () {return {msg: '我是一个用户组件',list: [],flag: false,actions: []}},// 注册storestore,components: {'v-actionsheet': ActionSheet},methods: {takePhoto () {alert('执行拍照')},openAlbum () {alert('打开相册')},changeCount () {// 改变vuex store里的值// 触发vuex store 里的mutations里的incCount方法this.$store.commit('incCount')},requestData () {// 请求数据var api = 'http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1'this.$http.get(api).then((response) => {console.log(response)// 注意this指向this.list = response.body.result// 数据放在store里面this.$store.commit('addList', response.body.result)}, function (err) {console.log(err)})}},mounted () {// 判断 store里面有没有数据var listData = this.$store.state.listconsole.log(listData.length)if (listData.length > 0) {this.list = listData} else {this.requestData()}this.actions = [{name: '拍照',method: this.takePhoto}, {name: '从相册中选择',method: this.openAlbum}]}
}
</script>
<style lang="scss" scoped>
</style>
<template><div id="app"><router-link to="/home">首页</router-link><router-link to="/news">新闻</router-link><router-link to="/user">用户</router-link><router-view /></div>
</template><script>
export default {name: 'App'
}
</script><style lang='scss' scoped>
#app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}
</style>

Vue学习之旅----vuex实现不同组件的数据共享 数据持久化相关推荐

  1. 阿菜的Vue学习之旅(一)

    阿菜的Vue学习之旅(一) 1.Vue的初步使用 2.关于MVVM架构的Vue设计 1.Vue的初步使用 刚刚开始接触Vue的时候,阿菜是这样写 html部分: <div id="me ...

  2. 小猪的Python学习之旅 —— 20.抓取Gank.io所有数据存储到MySQL中

    小猪的Python学习之旅 -- 20.抓取Gank.io所有数据存储到MySQL中 标签:Python 一句话概括本文: 内容较多,建议先mark后看,讲解了一波MySQL安装,基本操作,语法速成, ...

  3. Vue学习笔记(2)(组件化开发)

    Vue2.x学习笔记.原视频教程:最全最新Vue.Vuejs教程,从入门到精通_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 组件化 1. 什么是组件化? 组件化是Vue.js中的重要思想 它提 ...

  4. Vue学习(十六):组件间通信

    1. props 1.1 使用 功能:让组件接收外部传过来的数据 传递数据:<Demo name="xxx"/> 接收数据: 第一种方式(只接收):props:['na ...

  5. Vue学习之旅-02

    Vue02 7. 循环遍历 8. v-model的使用 9. 组件化开发 10. 组件通信 11. 插槽 7. 循环遍历 v-for遍历数组 <div id="app"> ...

  6. 少侠请重新来过 - Vue学习笔记(八) - Vuex

    Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. State Vuex ...

  7. 【Vue】如何使用vuex解决兄弟组件传值?

    目录 vuex全局数据管理 vuex介绍 组件关系和通信方案 vuex使用场景 vuex使用流程 vuex核心概念-state getters派生状态(计算属性) vuex核心概念-Mutations ...

  8. vue学习之关于element日历calendar组件中上月,今天,下月的显示

    今天学习写日历的模板,不过element日历组件官方文档提供的资料较少,所以试着写了个简单的,以后再深入学习. 显示效果图: 本月: 上月: 下月: 下方是源码 <template> &l ...

  9. Vue学习笔记(十九)——组件props信息的修改

    本文主要介绍一下组件对props(即传入参数)的处理. props是父组件给子组件传递的参数,而子组件需要修改props的场景非常多,但props并不像组件自己的属性那样可以随意修改(因为props会 ...

  10. Vue学习之旅Part1:Vue的数据渲染语法和指令(插值表达式、v-cloak、v-text、v-html)

    在Vue里 有好几种数据渲染的方法及相关指令 下面将一一介绍: 一.插值表达式 插值表达式是用两个花括号{{}}包裹属性 属性在Vue实例里定义: 通过Vue提供的指令即可很方便地将数据渲染到页面上 ...

最新文章

  1. 迪士尼又出黑科技,可将自然语言脚本转化为VR视频
  2. ubuntu9.10硬盘安装记录二
  3. 技术解析系列 | PouchContainer 富容器技术
  4. 【算法】Hash实现环形链表【LeetCode】
  5. Kubernetes 部署 Ingress 控制器 Traefik v2.1
  6. awk批量修改文件名,awk用法
  7. LeetCode2.两数相加
  8. Java POJO Bean 对象与 Web Form 表单的自动装配
  9. 九爷 带你了解 Memcache工作原理总结
  10. .Net中Cookie乱码解决方法
  11. BZOJ1877 [SDOI2009]晨跑 【费用流】
  12. 三星s7edge计算机软件,三星s7edge 官方6.0固件
  13. Matlab更改计算机用户名
  14. 基于FPGA的数字信号处理3.7开平方运算分析
  15. 南充计算机职业学校有哪些专业,南充旅游计算机职业中专学校2020年招生简介...
  16. 编译错误:找不到工程或库
  17. 校园人脸识别系统开发需求有哪些
  18. 【P4】解决本地文件修改与库文件间的冲突问题
  19. linux系统中网关ip修改设置命令大全
  20. quota 磁盘配额管理

热门文章

  1. 六度空间理论(数据结构图,c语言版)
  2. 开心豆少儿英语好吗,收费怎么样,一年多少钱的学费
  3. 硬盘播放器和pc计算机,电脑可不可以用来当电影播放器用
  4. 儿童手工制作日历_日历的手工制作教程图解
  5. 基于Python的二分法求平方根
  6. 使用Markdown如何修改图片大小
  7. ubuntu系统安装记录
  8. 关于计算机固态硬盘正确的是,如何对固态硬盘进行初始化?选择合适的格式及分区结构很重要...
  9. 面转栅格之ERROR 999999:执行函数时出错
  10. 桌面上的计算机打不开怎么办,电脑桌面计算机打不开怎么办