areslabs / alita

一套把React Native代码转换成微信小程序代码的转换引擎工具。我们不造轮子,不发明新框架,只是提供工具把RN扩展到微信小程序端。
https://areslabs.github.io/alita
MIT License
1.97k stars 131 forks source link

transition failed ,函数式组件在1.0.1版本下直接导出报错 #6

Closed MaybeSomeone closed 5 years ago

MaybeSomeone commented 5 years ago

组件SafeAreaView 没有在react-native指定

HOC 组件看起来是无法在小程序中使用 TypeError: func.body.body is not iterable

这个有点让人摸不着头脑 TypeError: Cannot read property '0' of null

ykforerlang commented 5 years ago

SafeAreaView 的确没有对齐。加入排期了,(我也是才发现的这个组件)。

HOC的支持存在一些限制,具体可以看这里。我们还在思考移除这些限制的方式。

第3个问题的话, 贴一下你的代码。 我看下呢 @MaybeSomeone

MaybeSomeone commented 5 years ago

import React from 'react'; import { View, Text } from 'react-native'; import PropTypes from 'prop-types'; import Icon from '../../../assets/fonts/icons'; import style from './DynamicLogViewer.style';

const propTypes = { item: PropTypes.object.isRequired };

const DynamicLogViewer = (recieveObjec) => { const { props = {} } = recieveObjec; const { item = {} } = props; const { account, address, agent, platform, nickname, location } = item; return (

      <View style={style.baseViewStyle}>
      <Icon name="label-icon" size={20} color="gray" style={style.iconStyle} />
      <View style={style.leftViewStyle}>
        <View style={style.detailViewStyle}>
          <Text style={style.titleTextStyle}>昵称:</Text>
          <Text
            style={style.detailTextStyle}
            numberOfLines={1}
            ellipsizeMode="tail"
          >
            {nickname}
          </Text>
        </View>
        <View style={style.detailViewStyle}>
          <Text style={style.titleTextStyle}>账号:</Text>
          <Text
            style={style.detailTextStyle}
            numberOfLines={1}
            ellipsizeMode="tail"
          >
            {account}
          </Text>
        </View>
        <View style={style.detailViewStyle}>
          <Text style={style.titleTextStyle}>IP地址:</Text>
          <Text
            style={style.detailTextStyle}
            numberOfLines={1}
            ellipsizeMode="tail"
          >
            {address}
          </Text>
        </View>
      </View>
      <View style={style.rightViewStyle}>
        <View style={style.detailViewStyle}>
          <Text style={style.titleTextStyle}>设备类型:</Text>
          <Text
            style={style.detailTextStyle}
            numberOfLines={1}
            ellipsizeMode="tail"
          >
            {agent}
          </Text>
        </View>
   {/* 平台类型 */}
    <View style={style.detailViewStyle}>
      <Text style={style.titleTextStyle}>平台类型:</Text>
      <Text
        style={style.detailTextStyle}
        numberOfLines={1}
        ellipsizeMode="tail"
      >
        {platform}
      </Text>
    </View>
    {/* 登录位置 */}
    <View style={style.detailViewStyle}>
      <Text style={style.titleTextStyle}>登录位置:</Text>
      <Text
        style={style.detailTextStyle}
        numberOfLines={1}
        ellipsizeMode="tail"
      >
        {location}
      </Text>
    </View>
  </View>
</View>

); };

DynamicLogViewer.propTypes = propTypes; export default DynamicLogViewer; @ykforerlang

ykforerlang commented 5 years ago

@MaybeSomeone 这是我们在处理函数式组件的一个bug。 暂时你可以按照下面的修改一下:

const propTypes = {
    item: PropTypes.object.isRequired
};

export default function DynamicLogViewer(recieveObjec) {
    const { props = {} } = recieveObjec;
    // other code ...
}
DynamicLogViewer.propTypes = propTypes;
MaybeSomeone commented 5 years ago

好的 谢谢

ykforerlang commented 5 years ago

@MaybeSomeone 转换的bug已经修复了,不过函数式组件需要在定义的时候导出详见