主要内容:https://www.cnblogs.com/GGGG-XXXX/articles/9467325.html
1 vuex
a 定义: 专门为vue.js设计的集中式状态管理架构
可以把它理解成一个仓库, 可以共享给其他组件使用.
b 下载和使用
下载: npm install vuex
使用: 在mian.js中 :
import vuex from 'vuex' , Vue.use(vuex)
实例化store实例
import Vue from 'vue'
import App from './App'
import router from './router'
import vuex from 'vuex'
Vue.use(vuex)
Vue.config.productionTip = false
const store = new vuex.Store({
state: {
show: false,
}
});
解耦: 把它写在一个单独的文件里:
import Vue from 'vue'
import Vue_x from "vuex"
Vue.use(Vue_x);
export default new Vue_x.Store({
state: {
show: false,
},
});
state : 需要共享的数据
getter: 从state取出的数据做出进一步的简单的计算(进行二次处理)
mutation: 更改vuex中的store中的状态的唯一方法就是提交mutation
组件中的内容:
<template>
<div>
<h1>这是免费课程页面</h1>
{{name}}
{{new_name}}
<button @click="my_click">点我改变数据</button>
</div>
</template>
<script>
export default {
name: "Freecourse",
data(){
return {
// name:this.$store.state.name,
new_name:this.$store.getters.new_s
}
},
methods:{
my_click:function () {
//向仓库提交数据,告诉仓库我要改编数据了
this.$store.commit('change_data', 'titi')
}
},
//最好用computed计算属性, 数据一更改就重新渲染页面
computed:{
name:function () {
return this.$store.state.name
}
},
mounted(){
this.$axios.request({
url:'http://127.0.0.1:8000/demo/',
methods:'get'
}).then(function (data) {
console.log(data.data)
}).catch(function (data) {
//失败后做的事情
})
}
}
</script>
<style scoped>
</style>
仓库中的内容;
//store就是需要东西共享给其他组件使用的部分
import Vue from 'vue'
import vuex from 'vuex'
Vue.use(vuex);
export default new vuex.Store({
state:{
name:'lili'
},
//对state中的数据进行二次处理
//this. $store. geters
getters:{
new_name: function (state) {
return state.name + '美丽'
},
new_s:function (state, getters) {
return getters.new_name + 'yes'
},
},
//接收传来的事件
mutations:{
change_data:function (state, data) {
//自己处理changedata事件
// 修改data中的数据
// store中的数据虽然该了, 但是他不会通知组件,
state.name = data
}
}
});
2 axios
a : 定义基于Promise的HTTP请求客户端,可以同时在浏览器和node.js使用。
b : 安装和使用:
安装: npm install axios
基本配置:
// main.js
import axios from "axios"
Vue.prototype.$axios = axios
// 组件中
methods: {
init () {
this.$axios({
method: "get",
url: "/user"
})
},
};
使用:在上一个组件的内容中:
3 将vuex和axios运用到项目中:
第90天的文件夹.