uni-app left-window中的组件数据改变后页面不重新渲染更改后的数据

uni-app left-window中的组件数据改变后页面不重新渲染更改后的数据

示例代码:

当页面刷新后修改account的值页面没有重新渲染出新的值,但是account确实改变了。如果延时几秒(5s)后再修改account的值页面就能正常显示。或者在插件中修改account值也能正常显示。

操作步骤:

当页面刷新后修改account的值页面没有重新渲染出新的值,但是account确实改变了。如果延时几秒(5s)后再修改account的值页面就能正常显示。或者在插件中修改account值也能正常显示。

预期结果:

当页面刷新后修改account的值页面没有重新渲染出新的值,但是account确实改变了。如果延时几秒(5s)后再修改account的值页面就能正常显示。或者在插件中修改account值也能正常显示。

实际结果:

当页面刷新后修改account的值页面没有重新渲染出新的值,但是account确实改变了。如果延时几秒(5s)后再修改account的值页面就能正常显示。或者在插件中修改account值也能正常显示。

bug描述:

当页面刷新后修改account的值页面没有重新渲染出新的值,但是account确实改变了。如果延时几秒(5s)后再修改account的值页面就能正常显示。或者在插件中修改account值也能正常显示。

示例图片 示例图片 示例图片 示例图片


更多关于uni-app left-window中的组件数据改变后页面不重新渲染更改后的数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

建议放到 created生命周期中试一下, 参考https://uniapp.dcloud.io/collocation/frame/lifecycle?id=%e7%bb%84%e4%bb%b6%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f,如果还未解决,请回复一下

更多关于uni-app left-window中的组件数据改变后页面不重新渲染更改后的数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html


好的感谢回复

leftComp 的 data 中是否定义了 account ?( 不是 left-window 的 data ) ,如无定义 ,account 值改变 leftComp 是不会重新渲染的

这是 uni-app left-window 组件数据更新的常见问题。问题核心在于 left-window 的初始化时机与数据更新的时序冲突。

left-window 在页面初始化时可能尚未完全挂载,此时直接修改其引用的数据,Vue 的响应式系统可能无法正确触发 left-window 内部的重新渲染。

解决方案:

  1. 使用 $nextTick 确保 DOM 就绪 在修改 account 数据后,使用 this.$nextTick() 确保 left-window 组件已更新:

    this.account = newValue
    this.$nextTick(() => {
      // 确保 left-window 已渲染完成
    })
    
  2. 通过 Vue.set 强制响应式更新 如果 account 是对象或数组的嵌套属性,使用 Vue.set 确保触发响应式:

    import Vue from 'vue'
    Vue.set(this.account, 'key', newValue)
    
  3. 使用深拷贝触发重新渲染 对于复杂对象,创建新对象引用强制更新:

    this.account = JSON.parse(JSON.stringify(newAccountData))
    
  4. 检查 left-window 的 :key 绑定 确保 left-window 有唯一的 key 值,数据变化时强制重新渲染:

    <left-window :key="refreshKey">
回到顶部