聞きたいこと
Vue初心者です。Reactだと、親コンポーネント(Aとする)でstateの値を子コンポーネント(Bとする)にpropsで引き渡していると、Aのstateが変更された段階でBが再度renderされると思います。
Vueでも上記の様なことを実現したいと思っているのですが、現在実現できておらず、何が原因でできていないのか聞きたいです。
実現したいこと
親コンポーネントから子コンポーネントであるモーダルを表示したいと思っています。
index.vueが親、Modal.vueが子です。
- index.vue
Vue
1<template> 2 <div> 3 <el-button type="text" @click="handleDialogVisible">モーダルを開く</el-button> 4 <Modal :visible=visible></Modal> 5 </div> 6</template> 7 8<script> 9import Modal from '../components/Modal'; 10 11export default { 12 components: { 13 Modal 14 }, 15 data() { 16 return { 17 visible: false, 18 }; 19 }, 20 methods: { 21 handleDialogVisible() { 22 this.visible = true; 23 } 24 } 25} 26</script> 27
- Modal
Vue
1<template> 2 <div> 3 <el-dialog title="Tips" :visible.sync="localVisible" width="30%"> 4 <span>Modal</span> 5 </el-dialog> 6 </div> 7</template> 8 9<script> 10 export default { 11 props: [ 'visible' ], 12 data() { 13 return { 14 localVisible: this.visible 15 } 16 }, 17 } 18</script> 19
わかっていること
- 親コンポーネントから引き渡されているvisibleの値はtrue、子コンポーネントのdataに存在しているlocalVisibleはfalseのままであること(下記GIF参照)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。