vue组件值变化但不刷新问题怎么解决

今天分享文章“vue组件变化但不刷新问题怎么解决”,主要从:组件值变化但不刷新强制组件刷新、bug复现、解决等几个方面为大家介绍,希望能帮到您。

vue组件值变化但不刷新问题怎么解决

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

在调用组件的时候,如果数据中只是某个属性变化(比如id)变化,在vue开发工具中看到变量值变化,但是组件上的数据就是不刷新

bug复现

引用组件

<bulletMenuVue v-else-if="sNode.type == 'cBomb'" :data="sNode" />

sNode数据结构

{    "id": "gun2m2c4",    "label": "子弹4",    "type": "cBomb",    "data": {        "angle": 50,        "mwr": {            "checked": false,            "band": 50,            "dbi": 50        },        "slr": {            "checked": false,            "length": 50,            "power": 50,            "facula": 50,            "size": 50        },        "irDetector": {            "checked": false,            "band": 50,            "dbi": 50        },        "mwd": {            "checked": false,            "band": 50,            "direction": 50,            "angle": 50        }    }}

当鼠标点击切换子弹过快时,会出现子组件不刷新的情况

解决

先看值有没有return出去!如果没有return,子组件也是不响应的,watchEffect甚至监听不到

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

我们可以将key分配给子组件,想重新渲染组件时,更新该key即可。这应该是强制Vue重新渲染组件的优异方法

具体一点

把子弹的id当做key给组件,当作为key的id发生变化时,Vue将知道它必须销毁组件并创建一个新组件。我们得到的是一个子组件,它将重新初始化自身并“重置”其状态。

<bulletMenuVue v-else-if="sNode.type == 'cBomb'" :data="sNode" :key="sNode.id" />

强制刷新vue组件

例如我有一个表格,每次点击其中的一行弹出一个窗口,展示对应的信息,弹窗如下

<el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" 较好="0">   <UserPage v-if="isShow" :userid="userid"/></el-dialog>

可见弹窗里面加载的其实是一个组件,组件通过判断当前点击行的id来进行不同数据的渲染

问题

发现,其实每次弹窗出来的数据都是名列前茅次加载的数据,原因是根本没有重新加载,而只是将dialog里面的组件进行展示和隐藏而已

解决 &ndash; 强制刷新组件

给点击时间里面加上强制刷新组件的代码,如下

//methods中方法handleCreate(row) {  this.isShow = false//销毁组件  this.$nextTick(() => {      this.isShow = true//重建组件  })  //控制dialog的显示  this.dialogStatus = 'create'  this.dialogFormVisible = true  //传参  this.userid = row.approvalId.toString()}

本文有关“vue组件值变化但不刷新问题怎么解决”的介绍就到这里,如果您已经掌握上述知识,那就赶紧行动实操一下!如果还需要了解更多“vue组件值变化但不刷新问题怎么解决”相关内容,可点击进入Worktile网站相关频道,进行搜索与查询。

文章标题:vue组件值变化但不刷新问题怎么解决,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/15132

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年6月29日 下午11:35
下一篇 2022年6月29日 下午11:49

相关推荐

  • php中有哪些字符串定界符

    php字符串定界符有两种:1、heredoc定界符,在“<<<”运算符之后要提供一个标识符,然后换行,接下来是字符串本身,最后要用前面定义的标识符作为结束标志。2、nowdoc定界符,在“<<<”运算符之后要提供一个被单引号括起来的标识符,然后换行,接下来是字符串…

    2022年9月26日
    89500
  • windows vc运行库介绍及常见问题怎么解决

    vc运行库是干嘛的 答:vc运行库主要是用于软件的运行支持。 1、vc运行库是使用microsoft visual studio编写的一系列.dll文件合集。 2、因此vc运行库主要服务于一些同样使用类似语言编写的软件或游戏。 3、相信很多朋友都遇到过打开软件出现弹窗提示错误代码,无法启动的问题。 …

    2022年9月20日
    86700
  • php可不可以循环字符串

    php可以循环字符串。在PHP里,字符串可以当作数组来使用,字符串中的字符可以通过一个以0为开始的,用类似数组结构中的方括号包含对应数字的方式来查找和修改;因此也可以像循环数组那样循环字符串),循环字符串的语法“for($i=0;$i<strlen($str);$i++){//循环体语句}”。…

    2022年9月26日
    68500
  • C语言中for循环与while循环怎么使用

    一、单层for循环 引例:C语言实现求1到10的和(用for循环实现) #include <stdio.h>int main(){ int i, sum = 0; for (i = 1; i <= 10; i++) sum = sum + i; printf(“sum = %dn”…

    2022年9月15日
    78300
  • windows驱动精灵检测不到显卡驱动如何解决

    解决方法: 方法一: 可能很多小伙伴在安装驱动的时候没有弄清楚自己的型号。 32位的驱动是无法装在64位上的。 小伙伴们应该尝试重新安装驱动。 方法二: 驱动太过老旧也是无法检测到的。 使用驱动精灵进行一下检测。 查看驱动是否需要进行更新。 1、进入驱动精灵,点击“硬件检测”。 2、如果驱动需要升级…

    2022年9月10日
    95100
  • windows驱动精灵怎么备份

    驱动精灵驱动备份: 1、打开驱动精灵,点击“百宝箱”。 2、在百宝箱中选择“驱动备份”。 3、点击“修改文件路径”。 4、选择文件的路径,并选择相应的备份设置,点击“确定”。 5、在上方点击“一键备份”即可。 “windows驱动精灵怎么备份”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业…

    2022年9月13日
    55000
  • 如何分析Java Web安全中的代码审计

    一、JavaWeb 安全基础 1. 何为代码审计? 通俗的说Java代码审计就是通过审计Java代码来发现Java应用程序自身中存在的安全问题,由于Java本身是编译型语言,所以即便只有class文件的情况下我们依然可以对Java代码进行审计。对于未编译的Java源代码文件我们可以直接阅读其源码,而…

    2022年9月26日
    1.1K00
  • JavaScript单线程和任务队列是什么

    本文章是对以往“JavaScript单线程和任务队列是什么”知识点的总结与梳理,不仅内容丰富、详细,而且知识点逻辑十分清晰。相信多数人读完本文后,会对“JavaScript单线程和任务队列是什么”的知识内容,有更为深入的理解和认识。 一、JavaScript为什么设计为单线程? JavaScript…

    2022年6月27日
    51300
  • imazing下载应用出错如何解决

    imazing下载应用出错解决方法 1、下载应用出错,有可能是imazing软件问题,可以在本站下载一个imazing进行尝试。 2、还可能是因为需要下载的软件问题,例如需要下载的软件依旧下架就无法正常下载了。 3、也可能是因为我们没有使用正确的应用下载方法,或者没有在App Store中获取过,下…

    2022年9月15日
    79900
  • mysql如何查询名列前茅条数据

    在mysql中,可以使用SELECT语句配合LIMIT子句来查询名列前茅条数据,语法为“SELECT *|字段名列表 FROM 表名 LIMIT 0,1;”。LIMIT子句可以指定查询结果从哪条记录开始显示,显示多少条记录,语法“LIMIT 初始位置,记录数”,而名列前茅条记录的位置是0;因此想要显…

    2022年9月24日
    1.1K00
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部