美文网首页
如何在父组件中强制刷新子组件

如何在父组件中强制刷新子组件

作者: 陈光展_Gz | 来源:发表于2019-08-27 21:12 被阅读0次

    一、父组件中,局部视图更新,需要内子组件初始化更新

    在业务场景中,先点击首页待办任务分页的第二页,然后已提交任务,这时候表格视图正常已经渲染,但是分页数字仍然显示在2,按正常逻辑,页码应该在1才符合。

    1.1 思路一:在点击 已提交任务 时候,把分页组件的当前current值修改为1.

    尝试,得知:在第一次首页渲染完成之后,点击待办任务或者已提交任务,只有表格视图的局部重新渲染,而分页组件不会再次渲染,故传值无法实现。

    1.2 思路二: 在点击事件发生同时,强制把分页组件初始化刷新,v-if

    // 原理就是:采用v-if会销毁组件并且重绘,这样就会重载组件
     <Pagination v-if="hackReset == true" />
    // 然后在父组件内的增删改查方法中操作,就好了
    <script>
    method:{
      forceUpdate(){
        this.hackReset  = false
       // $nextTick 是在下次 DOM 更新完成后,在执行里面的函数,类似于回调
        this.$nextTick(() => {
          this.hackReset = true;
        });
      }
    }
    </script>
    

    1.3 使用this.$forceUpdate强制重新渲染

    如果要在组件内部中进行强制刷新,则可以调用this.$forceUpdate()强制重新渲染组件,从而达到更新目的。

    <template>
    <button @click="reload()">刷新当前组件</button>
    </template>
    <script>
    export default {
        name: 'comp',
        methods: {
            reload() {
                this.$forceUpdate()
            }
        }
    }
    </script>
    

    相关文章

      网友评论

          本文标题:如何在父组件中强制刷新子组件

          本文链接:https://www.haomeiwen.com/subject/hymyectx.html