NervJS / taro

开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
https://docs.taro.zone/
Other
35.66k stars 4.8k forks source link

在class的renderXxx方法中返回jsx代码在百度小程序中有问题 #3244

Closed skymoonya closed 5 years ago

skymoonya commented 5 years ago

问题描述 在class的renderXxx方法中返回jsx,生成的swan代码有问题,导致出现了不可预期的行为

复现步骤

export default class LoupanSaleItem extends PureComponent {
  static options = {
    addGlobalClass: true,
  }

  renderHuxingItem() {
    return <View>123</View>;
  }

  render() {
    return (
      <View className='list-item'>
          <View className='list-bottom'>
            {this.renderHuxingItem()}
          </View>
      </View>
    );
  }
}

报错信息 image

系统信息 image

补充信息 经过测试发现是报错信息截图的标记部分生成的代码问题,改成{{anonymousStatetemp}}或者{{{...anonymousStatetemp}}}问题解决

taro-bot[bot] commented 5 years ago

欢迎提交 Issue~

如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

Good luck and happy coding~

taro-bot[bot] commented 5 years ago

CC @yuche

skymoonya commented 5 years ago

@yuche 升级版本之后还是没有解决

MacBook-Pro-2:c-mini-program moon$ taro info
👽 Taro v1.3.0-beta.6

  Taro CLI 1.3.0-beta.6 environment info:
    System:
      OS: macOS 10.14.5
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.15.3 - ~/.nvm/versions/node/v10.15.3/bin/node
      npm: 6.9.0 - ~/.nvm/versions/node/v10.15.3/bin/npm
    npmPackages:
      @tarojs/async-await: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/components: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/plugin-babel: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/plugin-csso: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/plugin-less: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/plugin-uglifyjs: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/redux: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/redux-h5: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/router: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/taro: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/taro-alipay: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/taro-h5: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/taro-swan: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/taro-tt: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/taro-weapp: ^1.3.0-beta.6 => 1.3.0-beta.6 
      @tarojs/webpack-runner: ^1.3.0-beta.6 => 1.3.0-beta.6 
      eslint-config-taro: ^1.3.0-beta.6 => 1.3.0-beta.6 
      eslint-plugin-taro: ^1.3.0-beta.6 => 1.3.0-beta.6 
      nervjs: ^1.4.0 => 1.4.0

编译之后的代码还是这样的

<template name="renderRootMenuItem">
    <block>
        <view class="{{'filter-item ' + extraClass}}" s-key="anonymousState__temp" bindtap="onRootMenuClick" data-e-tap-so="this" data-e-tap-a-a="{{menu.groupName || menu.name}}">
            <block>
                <block s-if="{{type === 1}}">
                    <view class="iconfont icon-filter"></view>
                </block>
                <block s-else>
                    <view class="arrows">{{text}}</view>
                </block>
            </block>
        </view>
    </block>
</template>
<block s-if="{{$taroCompReady}}">
    <view class="filter-condition-wrap bgcf">
        <view class="filter-condition bgcf" style="{{anonymousState__temp4}}">
            <view class="root-menu">
                <template is="renderRootMenuItem" data="{{...item.loopState__temp3}}" s-for="loopArray6" s-for-item="item" s-for-index="_anonIdx2"></template>
            </view>
        </view>
        <view class="placeholder"></view>
    </view>
</block>