有没有遇到过两个子组件共享父组件的数据,子组件请求父组件更新数据后,另外一个组件没有渲染出来更新的数据……
发布于 7 年前 作者 zhangyile 3222 次浏览 来自 问答
粉丝福利 : 关注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>
回到顶部