有没有遇到过两个子组件共享父组件的数据,子组件请求父组件更新数据后,另外一个组件没有渲染出来更新的数据……
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利
如题:
问题是这样的,第一次渲染的时候都是正常的,我先点击用户管理标签,然后再点击用户组管理的标签,然后点击刷新(请求父组件更新一下数据),然后再点击用户管理标签,发现用户管理标签中的table没有显示出来,我点一下刷新后,就可以显示出来,但是再跳转到用户标签的时候,用户标签的table又显示不出来了。。。。。 困扰了我两天了,求大神解救一下我。。。。。
代码很简单的。。。 看下面代码应该会更清楚我要表达的东西吧。。。。。
父组件:
<template>
<el-tabs v-model="activeName">
<el-tab-pane label="用户管理" name="one">
<usertable :users="users" @toFresh="freshAll"></usertable>
</el-tab-pane>
<el-tab-pane label="用户组管理" name="two">
<grouptable :groups="groups" @toFresh="freshAll"></grouptable>
</el-tab-pane>
</el-tabs>
</template>
<script>
import usertable from './UserTable'
import grouptable from './GroupTable'
export default {
data() {
return {
activeName: 'one',
users: [],
groups: [],
};
},
components:{
usertable,
grouptable,
},
created(){
this.freshAll()
},
methods: {
freshAll(){
this.groups = [{name:'groups'}]
this.users = [{name:'users'}]
}
}
};
</script>```
用户管理组件:
```<template>
<div>
<h3>用户管理</h3>
<el-button [@click](/user/click)="toFresh()"> 刷 新</el-button>
<el-table :data="users">
<el-table-column
prop="name"
label="姓名">
</el-table-column>
</el-table>
</div>
</template>
<script>
export default{
props:{
users: Array
},
methods:{
toFresh(){
this.$emit('toFresh')
},
},
}
</script>
用户组管理组件:
<template>
<div>
<h3>用户组管理</h3>
<el-button [@click](/user/click)="toFresh()"> 刷 新</el-button>
<el-table :data="groups">
<el-table-column
prop="name"
label="组名"
width="100">
</el-table-column>
</el-table>
</div>
</template>
<script>
export default{
props:{
groups: Array
},
methods:{
toFresh(){
this.$emit('toFresh')
},
}
}
</script>