Vue.js——十分钟入门Vuex
vuex最简单、最详细的入门文档
一个页面有很多表单 , 我试图将表单写成一个单文件组件 , 但是表单 ( 子组件 ) 里的数据和页面 ( 父组件 ) 按钮交互的时候 , 它们之间的通讯很麻烦 :
<!--父组件中引入子组件-->
<template>
<div>
<a href="javascript:;" @click="show = true">点击</a>
<t-dialog :show.sync="show"></t-dialog>
</div>
</template>
<script>
import dialog from './components/dialog.vue'
export default {
data(){
return {
show:false
}
},
components:{
"t-dialog":dialog
}
}
</script>
<!--子组件-->
<template>
<el-dialog :visible.sync="currentShow"></el-dialog>
</template>
<script>
export default {
props:['show'],
computed:{
currentShow:{
get(){
return this.show
},
set(val){
this.$emit("update:show",val)
}
}
}
}
</script>
之所以这么麻烦 , 是因为父组件可以通过 props
给子组件传递参数 , 但子组件内却不能直接修改父组件传过来的参数。
这时候 , 使用 vuex
就可以比较方便的解决这种问题了 :
<!--父组件中引入子组件-->
<template>
<div>
<a href="javascript:;" @click="$store.state.show = true">点击</a>
<t-dialog></t-dialog>
</div>
</template>
<script>
import dialog from './components/dialog.vue'
export default {
components:{
"t-dialog":dialog
}
}
</script>
<!--子组件-->
<template>
<el-dialog :visible.sync="$store.state.show"></el-dialog>
</template>
<script>
export default {}
</script>