1、创建src/store/index.js----仓库所在地----暴露store
2、main.js入口文件处引入store,挂载到Vue根实例中
3、创建store/movie.js-----电影页面对应的状态管理模块
export default {
state: {
},
getters: {
},
actions: {
},
mutations: {
}
}
4、定义电影页面关联的初始状态
export default {
state: {
movielist: []
},
getters: {
},
actions: {
},
mutations: {
}
}
5、定义异步操作action和改变状态mutation
export default {
state: {
movielist: []
},
getters: {
},
actions: {
getMovielist ({commit}) {
}
},
mutations: {
changeMovielist (state, data) {
state.movielist = data
}
}
}
6、实现异步操作中的数据请求-----src/api/movie.js
import axios from 'axios'
export default {
getMovielist (cb) {
// .then(({data}) => {cb(data)})
.then((res) => {cb(res.data)})
.catch((err) => {console.log(err)})
}
}
7、实现store/movie.js中的action的后续操作-----提交mutation改变数据源
import movieapi from '@/api/movie.js'
export default {
state: {
movielist: []
},
getters: {
},
actions: {
// getMovielist ({commit}) {
// movieapi.getMovielist((data) => {commit('changeMovielist', data)})
// },
getMovielist (context) {
movieapi.getMovielist((data) => {context.commit('changeMovielist', data)})
}
},
mutations: {
changeMovielist (state, data) {
state.movielist = data
}
}
}
8、组件movie组件的js中,添加一个选项computed,用来接收store中的数据----使用mapState辅助函数
import {mapState} from 'vuex'
export default {
computed: { //你store/movie中定义的初始状态是什么,key值就是什么,中间{}中的store/index.js中的modules中的key值
...mapState({
movielist: ({movie}) => movie.movielist
})
}
}
9、提交action---组件mounted函数中
import {mapState} from 'vuex'
export default {
computed: { //你store/movie中定义的初始状态是什么,key值就是什么,中间{}中的store/index.js中的modules中的key值
...mapState({
movielist: ({movie}) => movie.movielist
})
},
mounted () {
this.$store.dispatch('getMovielist')
}
}
10、组件的模板中可以直接使用movielist渲染数据
<ul>
<li v-for='item in movielist' :key='item.id'>
{{item.title}}
</li>
</ul>
11、分页功能
casts组件中添加了一个按钮,模拟下一页
<button @click="getData()">下一页</button>
在其js中添加
methods: {
getData () { //下一页
this.$store.dispatch('getCastsPagingList',{skipNum:2,limitNum:5})
}
},
store/casts.js
actions: {
getCastsList (context) {
castsapi.getCastsList((data) => {
context.commit('changeCastslist', data)})
},
getCastsPagingList (context, option){
castsapi.getCastsPagingList(option, (data) => {
context.commit('changeCastsPagingList', data)})
}
},
mutations: {
changeCastslist (state, data) {
state.castslist = data
},
changeCastsPagingList (state, data) {
state.castslist = [...state.castslist, ...data]
}
}
}
api/casts.js
import axios from 'axios'
export default {
getCastsList (cb) {
.then(({data}) => {cb(data)})
.catch((err) => {console.log(err)})
},
getCastsPagingList ({limitNum, skipNum}, cb) {
console.log(limitNum)
console.log(skipNum)
.then(({data}) => {cb(data)})
.catch((err) => {console.log(err)})
}
}
- 浅谈vuex使用方法(vuex简单实用方法)
Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vu ...
- vuex - 简单使用步骤梳理,轻松掌握、附源码
-----------------------往期----------------------------- vuex - 学习日记 vuex - 辅助函数学习 vuex - 常用命令学习及用法整理 ...
- vue - vue + vue-router + vuex 简单项目
简单的,我的首页,我的笔记项目 vue + vue-router + vuex View + VM(ViewModel) + Model (webpack) vue init webpack lint ...
- vuex简单示例
一.vuex是什么,解决了什么问题? 官方解释是:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生 ...
- (转)Vuex简单入门
今天试了一下Vuex,感觉跟Redux的实现思想类似.再此,简单地总结一下. 什么是Vuex 在Vue中,多组件的开发给我们带来了很多的方便,但同时当项目规模变大的时候,多个组件间的数据通信和状态管理 ...
- 转一篇关于vuex简单理解的文章
学习vuex半天摸不着头脑无意间发现了这篇文章 对vuex做了一个简单的阐述比较有助于我的理解 现在分享出来希望能给一些朋友一点帮助 这个是原文地址 http://www.ituring.com.c ...
- Vue + Vuex 简单使用
我们要实现的很简单,就是点击+1的count加一,点击-1的时候count-1 一.mutation 在vue 中,只有mutation 才能改变state. mutation 类似事件,每一个mu ...
- Vue状态管理Vuex简单使用
状态管理保存在store\index.js中,简单说明如下 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export def ...
- 使用vuex简单的实现系统中的状态管理
最近项目中用到了vue,其中状态的集中管理使用到了vuex,因此就学习vuex做一个简单的记录.vuex的官方网址如下: https://vuex.vuejs.org/zh-cn/ vuex 当我们 ...
随机推荐
- 【JavaScript】EasyUIのForm的跨域提交问题解析
昨日.プログラムを作るとき.一つの問題がありますが.皆に共有します. [問題] EasyUIのFormでURLを請求するとき.返却の値が取得できない. [ソース] var fnRegUser = fu ...
- Swift Realm 完整使用记录
新项目用到了数据库,本来之前用的都是 SQL,但是语法写的实在是恶心,所以使用 Realm 尝试一下. 1.我使用的 pod 库,所以先 pod 库安装一下,安装完别忘了先编译一下,不然 import ...
- vs code 配置 php xdebug
1.安装扩展 php debug 2.下载xdebug插件 做个页面输出phpinfo(),复制到这个页面 https://xdebug.org/wizard.php 提交后会告诉你机子要下载哪个版本 ...
- Boto3
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.htmlboto3 安装pip install bot ...
- maven项目引用时,导入类报错,选择两个项目同时执行Maven update
maven项目引用时,导入类报错,选择两个项目同时执行Maven update springboot引入第三方jar,需要扫描时加@ComponentScan("第三方的包名") ...
- 数据库子查询和join的比较
子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作.子查询虽然很灵活,但是执行效率并不高. select goods_id,goods_name from go ...
- 《笨方法学Python》加分题16
基础部分 # 载入 sys.argv 模块,以获取脚本运行参数. from sys import argv # 将 argv 解包,并将脚本名赋值给变量 script :将参数赋值给变量 filena ...
- GUI学习之九——QLineEdit的学习总结
我们在前面学习了各种按钮控件,从这一章开始就是各种输入控件的学习. 首先要用的就是QLineEdit——单行编辑器, 一描述 QLineEdit是一个单行文本编辑器,允许用户输入和编辑单行纯文本.自带 ...
- javaMail的使用以及trying to connect to host "1xxx@163.com", port 25, isSSL false异常
最近项目用到邮件系统,开始了解javaMail...话不多说先上代码: pom依赖: <!-- 邮件 https://mvnrepository.com/artifact/javax.m ...
- nodeJS接入微信公众平台开发
一.写在前面的话 Node.js是一个开放源代码.跨平台的JavaScript语言运行环境,采用Google开发的V8运行代码,使用事件驱动.非阻塞和异步输入输出模型等技术来提高性能,可优化应用程 ...