vue子组件数据不刷新,vue刷新页面时只让部分组件刷新

  vue子组件数据不刷新,vue刷新页面时只让部分组件刷新

  本文主要介绍vue组件值变化但不刷新时强制组件刷新的问题。有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

  元件值更改但不刷新。强制组件刷新。bug重现解决方案。强制组件刷新。问题解决方案强制组件刷新

  

组件值变化但不刷新强制组件刷新

  调用组件时,如果数据中只有某个属性(如id)发生变化,vue开发工具中的变量值会发生变化,但组件上的数据不会刷新。

  

bug复现

  参考组件

  bulletMenuVue v-else-if= s node . type== cBomb :data= s node /

  SNode数据结构

  {

  id : gunm2c 4 ,

  标签:项目符号4 ,

  键入: cBomb ,

  数据:{

  角度:50,

  mwr :

   checked: false,

  乐队:50,

  dbi: 50

  },

  单反:

   checked: false,

  长度:50,

  功率:50,

  光斑:50,

  尺寸:50

  },

  红外探测器:

   checked: false,

  乐队:50,

  dbi: 50

  },

  mwd :

   checked: false,

  乐队:50,

  方向:50,

  角度:50

  }

  }

  }

  当鼠标点击切换项目符号太快时,子组件不会被刷新。

  

解决

  先看看值是不是return!没有return,子组件没有响应,watchEffect甚至不能监听。

  我们将提供一个关键属性,以便Vue知道特定的组件与特定的数据相关联。如果键保持不变,组件就不会改变,但是如果键改变了,Vue就会知道应该删除旧的组件,创建一个新的组件。

  我们可以给一个子组件分配一个键,当我们想要重新渲染组件时,我们可以只更新键。这应该是强制Vue重新渲染组件的最好方法。

  具体一点

  将项目符号id作为组件的键。当密钥id改变时,Vue将知道它必须销毁组件并创建一个新的组件。我们得到的是一个子组件,它将重新初始化自己并“重置”其状态。

  bulletMenuVue v-else-if= s node . type== cBomb :data= s node :key= s node . id /

  

强制刷新vue组件

  例如,我有一个表格。每次我点击其中一行,就会弹出一个窗口显示相应的信息。弹出窗口如下

  El-dialog:title= text map[dialog status]:visible . sync= dialogFormVisible top= 0

  user page v-if= isShow :userid= userid /

  /el-dialog

  可以看到,弹出窗口中加载的其实是一个组件,通过判断当前点击行的id来呈现不同的数据。

  

问题

  发现其实每个弹出窗口的数据都是第一次加载的数据,因为根本没有重新加载,只是显示和隐藏了dialog中的组件。

  

解决 强制刷新组件

  将强制刷新组件的代码添加到点击时间中,如下所示

  //方法中的方法

  handleCreate(row) {

  This.isShow=false//销毁组件

  这个。$nextTick(()={

  This.isShow=true//重新构建组件

  })

  //控制对话框的显示

  this.dialogStatus=create

  this.dialogFormVisible=true

  //传递参数

  this . userid=row . approval id . tostring()

  }

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: