zhangdaren / miniprogram-to-uniapp

轻松将各种小程序转换为uni-app项目
Other
1.64k stars 270 forks source link

关于this.setData的语法转换问题 #150

Open IceApriler opened 1 year ago

IceApriler commented 1 year ago

问题描述?

微信小程序代码:

// 表单picker选择事件
pickerOnConfirm(e) {
  console.log(e)
  const { field, value } = e.detail
  const { selectedArray } = value
  this.setData({
    [field]: selectedArray, // field为变量的字段值
  })
},

上面的语法会被转换成下面的,逻辑直接变了。 uniapp代码:

// 表单picker选择事件
pickerOnConfirm(e) {
    console.log(e);
    const { field, value } = e.detail;
    const { selectedArray } = value;
    this.field = selectedArray;
},

重现步骤

期望的结果

希望转换后的语法依然使用this.setData()去更新。

最后

感谢作者的辛苦付出!感谢!!!

IceApriler commented 1 year ago

大佬再看下下面这个问题,麻烦大佬了:

微信小程序代码:

<view
  class="row {{activeTypeIdx === index ? 'active' : ''}}"
  wx:for="{{['测试1', '测试2', '测试3']}}"
>
</view>

转换后:

<view
  :class="'row ' + (activeTypeIdx === index ? 'active' : '')"
  v-for="(item, index) in ["测试1", "测试2", "测试3"]"  // 数组里面的单引号转换成了双引号,需要二次修复
>
</view>
zhangdaren commented 1 year ago

问题描述?

微信小程序代码:

// 表单picker选择事件
pickerOnConfirm(e) {
  console.log(e)
  const { field, value } = e.detail
  const { selectedArray } = value
  this.setData({
    [field]: selectedArray, // field为变量的字段值
  })
},

上面的语法会被转换成下面的,逻辑直接变了。 uniapp代码:

// 表单picker选择事件
pickerOnConfirm(e) {
    console.log(e);
    const { field, value } = e.detail;
    const { selectedArray } = value;
    this.field = selectedArray;
},

重现步骤

期望的结果

希望转换后的语法依然使用this.setData()去更新。

最后

感谢作者的辛苦付出!感谢!!!

新版再使用这种方式了。你试试。 上面那种方式有不可绕过的问题。

zhangdaren commented 1 year ago

大佬再看下下面这个问题,麻烦大佬了:

微信小程序代码:

<view
  class="row {{activeTypeIdx === index ? 'active' : ''}}"
  wx:for="{{['测试1', '测试2', '测试3']}}"
>
</view>

转换后:

<view
  :class="'row ' + (activeTypeIdx === index ? 'active' : '')"
  v-for="(item, index) in ["测试1", "测试2", "测试3"]"  // 数组里面的单引号转换成了双引号,需要二次修复
>
</view>

貌似新版也解决了哇,,,请以npm版本为准,github代码很久没更新了,,最近太忙。 Npm版里面也是源码。

IceApriler commented 1 year ago

收到,我试一下,先感谢大佬的付出! @zhangdaren