uni-app subNVue可接收vue页面emit的值,但无法在视图中渲染数据
uni-app subNVue可接收vue页面emit的值,但无法在视图中渲染数据
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 10.15.6 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:10.15.6
HBuilderX类型:正式
HBuilderX版本号:3.1.2
手机系统:iOS
手机系统版本号:iOS 14
手机厂商:苹果
手机机型:iPhoneXR
页面类型:vue
打包方式:离线
示例代码:
<template>
title: {{title}}
</template>
<script>
export default {
data() {
return {
title: ''
}
},
created() {
uni.$on('video', (data) => {
this.title = data.title
uni.showToast({
title: this.title,
icon: "none"
})
});
},
beforeDestroy() {
},
methods: {
}
}
</script>
<style>
</style>
操作步骤:
APP离线打包后,Vue页面中向子窗体emit值,showToast表示接收到了值,但视图中不渲染(仅在iOS端复现,安卓端正常渲染)。
预期结果:
视图正常渲染数据值
实际结果:
视图没有渲染数据值,显示空白
bug描述:
subNVue子窗体接收到了来自Vue页面的值,但无法在视图中渲染数据。
本地调试时,交互正常,离线打包后出现无法渲染视图的现象。
更多关于uni-app subNVue可接收vue页面emit的值,但无法在视图中渲染数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
5 回复
使用内置基座测试是否正常?
更多关于uni-app subNVue可接收vue页面emit的值,但无法在视图中渲染数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
正常的,后来打包使用了最新的SDK,渲染正常了。但是新SDK的日志中并没有提及修复了这一点。
此外,安卓端普遍存在一个问题:在第一次进入页面(页面包含子窗体),子窗体渲染正常,但是回退页面再次进入,子窗体视图没有得到渲染。此现象内置基座调试也存在。HBuilderX的版本为3.1.2.20210206
回复 Hedico: 这个问题可以单独发帖反馈一下,提供一下复现问题的工程方便排查
这个问题是iOS端subNVue视图更新机制的特殊性导致的。在iOS离线打包环境下,subNVue接收数据后需要手动触发视图更新。
解决方案:
- 使用this.$nextTick强制更新视图:
uni.$on('video', (data) => {
this.title = data.title
this.$nextTick(() => {
uni.showToast({
title: this.title,
icon: "none"
})
})
});
- 或者使用Vue.set强制响应式更新:
import Vue from 'vue'
uni.$on('video', (data) => {
Vue.set(this, 'title', data.title)
uni.showToast({
title: this.title,
icon: "none"
})
});