Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于循环迭代中使用if或switch赋值jsx的问题 #1331

Closed
Herryjoeson opened this issue Dec 2, 2018 · 4 comments
Closed

关于循环迭代中使用if或switch赋值jsx的问题 #1331

Herryjoeson opened this issue Dec 2, 2018 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@Herryjoeson
Copy link

问题描述
关于循环迭代中使用switch赋值jsx的问题

复现步骤
[复现问题的步骤]

  // 如果是在render函数使用switch是没有问题,
 let test = null;
        let test2 = 'a';
        switch (test2) {
            case 'a': {
                test = <Text>测试</Text>;
                break;
            }
            default: {
                test = <Text>测试</Text>;
                break;
            }
        }
        return (
            <View>
                {test}
            </View>
      );
    //  但是在某些场景需要遍历第二层的数据的时候,要使用不同的数据状态的值对应不同的layout就有问题了
   //  数据源
   [
          {
                 children : [
                          { }
                  ]
          }
    ]

  // jsx代码
   {
         test.map((item, index) => {
              let
                  headerRightLayout = null,
                  footerLayout = null;       
                  // 这样小程序就显示null 了
                   if (item.order_status === 1) {
                           headerRightLayout = (<Text className={'order-text'}>测试</Text>);
                    } 
                  // 换成switch来处理也是同样不行
                   switch (parseInt(item.order_status)) {
                                    case 1: {
                                        headerRightLayout = (<Text className={'order-text'}>测试</Text>);
                                        footerLayout = (
                                            <View className={'items-footer'}>
                                                <Button className={'order-button font_24 tips-button'}>测试</Button>
                                            </View>
                                        );
                                        break;
                                    }
                    }
        })
}         

期望行为
希望大佬能够支持一下在二级数据源的情况下能使用 if 或 switch赋值jsx

系统信息

  • 操作系统: [MacOs Windows Linux]
  • Taro 版本 [1.2.0 beta 6]
  • Node.js 版本 [e.g. v9.2.0]
  • 报错平台 [weapp]
@taro-bot
Copy link

taro-bot bot commented Dec 2, 2018

欢迎提交 Issue~

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

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

Good luck and happy coding~

@yuche
Copy link
Contributor

yuche commented Dec 3, 2018

https://github.com/NervJS/taro/blob/master/packages/eslint-plugin-taro/docs/if-statement-in-map-loop.md
有一条 ESLint 规则规定了这一行为并告诉你可以怎么做。

@yuche yuche self-assigned this Dec 3, 2018
@yuche yuche added enhancement New feature or request 编译器 labels Dec 3, 2018
@Herryjoeson
Copy link
Author

怎么感觉还是这样看的舒服

 numbers.map((number) => {
  let element = null
  const isOdd = number % 2
  if (isOdd) {
    element = <Custom />
  }
  return element
})

按照表达式的话 一个状态过多的情况加 那不是要多写很多这种表达式。代码看起来也不是很舒服

@Herryjoeson
Copy link
Author

这个特性不能实现的话。那就只能多写表达式了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants