yyyttt
yyyttt
  • 发布:2022-11-25 09:58
  • 更新:2023-01-05 16:58
  • 阅读:273

【报Bug】vue3 使用renderjs 异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 12.6

HBuilderX类型: 正式

HBuilderX版本号: 3.6.5

手机系统: Android

手机系统版本号: Android 11

手机厂商: 小米

手机机型: mix4

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<template>  
  <view class="content">  
    <view :prop="options" :change:prop="renderScript.updateOptions" />  
  </view>  
</template>  

<script>  
  export default {  
    data() {  
      return {  
        options: {  
          a: '1',  
        }  
      }  
    }  
  }  
</script>  
<script module="renderScript" lang="renderjs">  
  export default {  
    methods: {  
      updateOptions(newVal) {  
        console.log(newVal, this.options)  
      }  
    }  
  }  
</script>  

操作步骤:

使用代码示例分别在vue2和vue3环境运行

预期结果:

vue3和vue2表现一致

实际结果:

vue3和vue2表现不一致

bug描述:

如代码示例

vue2中updateOptions接收到的会是 object类型,并且this.options也能访问

vue3中updateOptions接收到的会是 string类型,并且this.options访问不到

2022-11-25 09:58 负责人:无 分享
已邀请:
DCloud_UNI_Anne

DCloud_UNI_Anne

已记录问题后续排查,已加分感谢反馈!

YUANRJ

YUANRJ

您好,类型问题后续更新会解决。关于 this.options 的读取是不支持的。数据位于逻辑层,而 renderjs 位于视图层不能直接访问数据,Vue2 中由于设计原因一部分数据会单项同步到视图层导致可以同时读取到(文档中并未说明此用法不推荐使用)。

  • yyyttt (作者)

    但对象中的属性更新时,updateOptions 没有回调

    2023-01-05 17:19

  • yyyttt (作者)

    vue2可以监听,也是同一个问题吗?

    2023-01-05 17:24

  • YUANRJ

    回复 2***@qq.com: 您好,此问题已记录,可以先赋值整个对象进行临时解决。

    2023-01-12 10:29

该问题目前已经被锁定, 无法添加新回复