angularjs组件间通讯_vuex实现不同组件的数据共享 数据持久化

Vuex 是一个专为 Vue.js 设计的状态管理模式

vuex解决了组件之间同一状态的共享问题。

当我们的应用遇到多个组件共享状态时,会需要:

多个组件依赖于同一状态。传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。这需要你去学习下,vue编码中多个组件之间的通讯的做法。

来自不同组件的行为需要变更同一状态。我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。

以上的这些模式非常脆弱,通常会导致无法维护的代码。来自官网的一句话:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。

它采用集中式存储管理应用的所有组件的状态。这里的关键在于集中式存储管理。这意味着本来需要共享状态的更新是需要组件之间通讯的,而现在有了vuex,就组件就都和store通讯了。问题就自然解决了。

这就是为什么官网再次会提到Vuex构建大型应用的价值。如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。

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

1.vuex解决了组件之间同一状态的共享问题 (解决了不同组件之间的数据共享)

2.组件里面数据的持久化。

小项目不部建议用vuex

vuex的使用:

1、src目录下面新建一个vuex的文件夹

2、vuex 文件夹里面新建一个store.js

3、安装vuex

cnpm install vuex --save

4、在刚才创建的store.js引入vue 引入vuex 并且use vuex

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

5、定义数据

/*1.state在vuex中用于存储数据*/

var state={

count:1

}

6、定义方法 mutations里面放的是方法,方法主要用于改变state里面的数据

var mutations={    incCount(){++state.count;    }}

暴露

const store = new Vuex.Store({    state,    mutations})    export default store;

组建里面使用vuex:

1.引入 store

 import store from '../vuex/store.js';

2、注册

 export default{data(){    return {                      msg:'我是一个home组件',value1: null,         }},store,methods:{    incCount(){      this.$store.commit('incCount');   /*触发 state里面的数据*/    }}    }

3、获取state里面的数据

this.$store.state.数据

4、触发 mutations 改变 state里面的数据

this.$store.commit('incCount');
142e6d5385696efa5b35a7bf80c8eaec.png
71a16e9e2b196e7c454a6c0445c38e37.png

main.js中引用

import Vue from 'vue'import App from './App.vue'import './plugins/element.js'import store from './store/store'import router from './router/index' //引入路由配置var axios = require('axios')axios.defaults.baseURL = 'http://localhost:8080/api'// 全局注册,之后可在其他组件中通过 this.$axios 发送数据Vue.prototype.$axios = axiosVue.config.productionTip = falsenew Vue({  render: h => h(App),  router,  store,}).$mount('#app')

login.vue中使用

 {{$store.state.user.userDetail.userId}}//方法中调用 this.$store.commit('setUser',{'userId':successResponse.data.userId})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值