组件之间的数据传递--Vuex
安装Vuex:
npm install Vuex -S
在main.js中引入
import Vue from 'vue' import App from './App' import Vuex from 'vuex' import store from './vuex/store' Vue.use(Vuex) /* eslint-disable no-new */ new Vue({ el: '#app', store, render: h => h(App) })
创建store.js
在 src 目录下创建 vuex ,在文件夹vuex中创建store.js
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state:{ author : 'hello' } }) export default store
映射到组件:
<template>
<footer class="footer">
<p>
Copyright © {{author}} - 2016 All rights reserved
</p>
</footer>
</template>
<script>
export default{
name: '....',
comptude:{
author(){
return this.$store.state.author
}
}
}
</script>
在其他组件中修改状态:
<template>
<div>
<input type='text' v-model='text' @change='getAuthor'>
</div>
</template>
<script>
export default {
data(){
return{ text:'' }
},
methods:getAuthor:function(){
this.$store.state.author = this.text
}
}
</script>
这样就实现了input状态发生改变时,author的值也跟着发生改变,达到了跨组件修改值的方法。
官方写法
store.js:
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.store({ state:{ author : 'hello' }, mutations:{ newAuthor(state,msg){ state.author = msg } } }) export default store
然后在组件内修改setAuthor方法:
methods:{ setAuthor:function(){ this.$store.commit('newAuthor',this.text) } }

浙公网安备 33010602011771号