vuex——纯用法,无理论

官方解释:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式

个人理解:组件间传参使用,不用考虑父子组件关系或者非父子组件关系

vuex官网:https://vuex.vuejs.org/zh/  点击打开链接

安装:cnpm install vuex --save

注册vuex

新建存放vuex的文件store/index.js

引用并声明vuex

import Vue from 'vue'
import Vuex from "vuex"
Vue. use( Vuex);


用法一:纯本地数据传输(非异步请求数据)

定义vuex内容

const store = new Vuex. Store({ //定义
state: {
title: " ", //提前定义数据名称
comingsoon: "",
},
mutations: {
//方法名称和传参时定义的名称一致
         kerwinchangetitle( state, payload) { //第一个参数是要存放的位置,第二个参数是传来的数据
state. title = payload
}
},
})
export default store; //导出


引用store

import Vuex from "vuex"
import store from "./store"

new Vue({
el: '#app',
router,
store,
axios,
components: { App },
template: '<App/>',
render : h => h( App)
})


传送数据

点击事件跳转组件,跳转之前将数据传送到vuex内储存

setStore( name) {
this. $store. commit( "kerwinchangetitle", name);
router. push( "/");
}

kerwinchagetitle:定义传送方法名称

name:将要储存在vuex内的数据

接收数据

mounted() {
this. title = this. $store. state ? this. $store. state. title : [];
}

this.$store.state.title:vuex内存放的数据名称,将vuex内的数据请求出并赋值给该组件的this.title


用法二:异步请求数据

import axios from "axios"; //引入axios

     state: {
comingsoon: ""
},
actions: {
comingsoonaction : function ( store, payload) {
//异步请求
axios. get( ""). then( res => {
console. log( res. data. data) //请求回来的数据
store. commit( 'kerwincomingsoon', res. data); //传给metations中修改
})
}
},
metations: {
kerwincomingsoon : function ( state, payload) {
state. comingsoon = payload //修改参数 赋值给comingsoon。
}
}
metations会监控每一笔数据的修改记录,必须交给metations中修改,否则会报错

在其他组件获取数据的操作是相同的

store最终是被渲染成一段js对象 刷新后就没有了 内存就被释放了

1.应用层级的状态应该集中到单个store对象中。
2.提交mutation是更改状态的唯一方法,并且这个过程是同步的
3.异步逻辑都应该封装到action里面


官网推荐工具 谷歌浏览器插件  devtools



<----------------------------------------------------学习交流,---------------------------------------------------->

猜你喜欢

转载自blog.csdn.net/weixin_41770018/article/details/81001949