当前位置: 首页 > 知识库问答 >
问题:

前端 - tree组件第一次回显正常,第二次不回显了什么原因?

柴嘉年
2024-04-12
 <el-tree            ref="treeRef"            :data="dataTree"            :props="defaultProps"            node-key="id"            show-checkbox            default-expand-all            :check-strictly="true"            :default-checked-keys="check_id"            @check-change="handleNodeClick"          />

父组件传过来的值
const props = defineProps<{
dialogEdit: boolean;
edittData: object;
ID: Array<string>;
}>();
let check_id = ref<string[]>([]);

watch(  () => props.dialogEdit,  () => {    dialogEdit.value = props.dialogEdit;    check_id.value = props.ID;    console.log("xxxxxxxxxx", check_id.value);  });

图片.png
图片.png

共有1个答案

淳于慎之
2024-04-12

根据你提供的代码和描述,问题可能出在watch函数上。在Vue 3中,watch函数的第一个参数应该是一个返回你想要观察值的函数,而不是直接传入一个属性。而在你的代码中,你是直接传入了props.dialogEdit。当props.dialogEdit变化时,这个值可能会被缓存,因此第二次不会触发watch函数。

你可以尝试将watch函数修改为以下形式:

watch(  () => props.dialogEdit,  (newVal, oldVal) => {    dialogEdit.value = newVal;    check_id.value = props.ID;    console.log("xxxxxxxxxx", check_id.value);  });

这样,当props.dialogEdit变化时,watch函数就会重新计算其值,并触发回调函数。

另外,请确保props.ID的值在第二次watch触发时是有效的,且与你期望的check_id值相符。如果props.ID的值在第二次没有正确更新,那么check_id的值也不会改变,这可能导致树组件没有正确回显。

如果问题仍然存在,那么可能需要更深入地检查你的代码,看看是否有其他因素影响了树组件的回显。例如,你可以检查dataTreedefaultProps的值是否在第二次回显时发生了变化,或者handleNodeClick函数是否有可能影响了树组件的状态。

 类似资料:
  • 从一段时间以来,我开始有以下问题。我播放它通过加载文件并显示图像的级别。我完成了关卡,它就会卸载文件。当我再次玩关卡时,它只显示堡垒,玩家,敌人,子弹,但它不再显示其他的图像,如地面,背景,树木等,而是显示给我白色的素色。 然而,就在此时,我没有从AssetManager获取纹理,而是将所有内容改为创建新对象,如,它不会产生此错误。我猜是有什么地方不对或遗漏了。 它实际上只是白色的,但当我创建地面

  • 我有这样一个数组,里面每一项都是对象{id:xxx,attributes{xxx}},如果dataIndex是最外层的id,点编辑后可以正常显示,如果是attributs里面的某一项,就会变成[object Object],在proComponents官方demo里面也是这样的,除了自己写一个以外,有没有什么办法让它正常回显呢?

  • 问题内容: 我有一个简单的AJAX表单,该表单可以在提交时正常运行。但是,如果我随后将新数据输入相同的表单(而不刷新页面),则它将提交两次表单。如果我第三次这样做,那么它将第三次提交表单,依此类推。为什么这样做呢?这是我的代码: 问题答案: 即使我在开发AJAX登录表单时也遇到了同样的问题。搜寻了几个小时后,我找到了解决方案。希望这对您有所帮助。 基本上,您必须在ajax请求完成后 取消绑定 表单

  • 第一次获取数据不会回显,第二次才会回显 两个接口 第一个是获取所有的权限的,第二个是获取已有权限的 我第二次获取才会回显 搞一天了 也没找出来原因..... 主要代码:

  • 楼主是第一次面试,在boss上随便海投了几十家公司,收到了几家的笔试邀请,做了其中一家的笔试(不知名小公司),时长1h30min,运气好过了,之后开始约面试 一面:1h 1.自我介绍。面试官:你现在大二是吗,这么急就出来找实习啊。我:呵呵,是啊找实习要趁早 2.get和post的区别 3.缓存,说说强缓存和协商缓存 4.cookie和webstorage的区别(这个我老熟了) 5.项目相关 6.怎

  • 我正在开发一个android应用程序,它使用AsyncTasks从应用程序API获取JSON数据。当我启动我的应用程序时,一切都很顺利,应用程序从API中获取了正确的信息。 编辑:这是我获取数据的方式。 BufferedReader读取器=空;尝试{reader=new BufferedReader(new InputStreamReader(url.OpenStream(),“UTF-8”));

  • 问题内容: 我很少使用SQL,也无法在档案库中找到任何类似的内容,所以我问一个简单的查询问题:我需要一个查询,该查询返回 personID 且仅返回第一个 seeedTime 记录: 想要的结果: 那就是我做过的和失败的: PS:注意SQL CE 4 问题答案: 如果您的seenTime增加,随着seenID增加: 更新另一种情况: 如果不是这种情况,并且您确实希望SeenedTime与最小的se

  • 美团第二次一面(岗位:web前端) 简要介绍一下,上次运维把我挂了,然后前端,后端都把我捞了起来,因为前端先打的电话,先约的前端,后端知道我约前端了,就没消息了 先说结果:又被感谢信了(意料之中吧😂) 这次面的时间比较长大概一个h,说过程吧 首先就是基础,也就是八股吧,涉及到的点有 1.操作系统,内存分段分页机制 2.计算机网络:三次握手,延申了一下,第三次包丢失了咋办 dns解析过程 3.设计