在taro的jsx中,编译的工作方式官方明确表示,在map循环中不能使用if循环。
但是,官方也给出了解决办法。 这是提取变量或通过三目运算嵌套的方法。
链接至: https://github.com/nerv js/taro/blob/master/packages/eslint-plugin-taro/docs/if-statement-in-mamaro
但是,如果我有多个条件进行判断的话,我想我是不是只能进行三眼套三眼套。
如下所示。 使用简单的终端服务。
import Taro,{Component} from '@tarojs/taro '
import {View,Text,Button} from '@tarojs/components '
importconnectfrom ' ././containers/counter '
import { component class } from ' react ';
类型pageownprops={
}
type PageStateProps={}
type PageState={
listArr: string[]
}
typei props=pageownpropspagestateprops
接口列表{
props: IProps,
state: PageState
}
@connect
类列表扩展组件{
构造器
super(…arguments;
this.state=({
listArr: ['one '、' two '、' three']
() )
}
公共渲染器
返回(
{
this.state.listarr.map((item,index )={
返回索引===0?
index=0 item is {item} :
索引===1?
index=1 item is {item} :
空值
() )
}
)
}
}
exportdefaultlistascomponentclass
确实能收到效果,但这样写层次很深,很难看。 咨询taro作者旁边鲜艳的电灯胆后,提取回路的内容制作子组件,将索引和item,作为参数传递给子组件,在子组件中使用if即可。
import Taro,{Component} from '@tarojs/taro '
import {View,Text,Button} from '@tarojs/components '
importconnectfrom ' ././containers/counter '
import { component class } from ' react ';
import ListItem from './listItem '
类型pageownprops={
}
type PageStateProps={}
type PageState={
listArr: string[]
}
typei props=pageownpropspagestateprops
接口列表{
props: IProps,
state: PageState
}
@connect
类列表扩展组件{
构造器
super(…arguments;
this.state=({
listArr: ['one '、' two '、' three']
() )
}
公共渲染器
返回(
{this.state.listarr.map((item,index )={
返回
() )
)
}
}
exportdefaultlistascomponentclass
子组件listItem.tsx:
import { component class } from ' react '
import { component } from ' @ taro js/taro '
import { view } from ' @ taro js/components '
type PageStateProps={
计数器: { }
}
type PageDispatchProps={}
类型pageownprops={
propindex :编号,
propItem: any
}
type PageState={}
typei props=pagestatepropspagedispatchpropspageownprops
接口列表{
props: IProps;
state: PageState
}
classlistitemextendscomponentimplementslistitem {
render () )。
let resultDom: any=null;
if(this.props.propindex===2) {
resultDom=
prop is 2,item is {this.props.propItem}
}else{
resultDom=
prop is no 2,item is {this.props.propItem}
}
返回(
{resultDom}
)
}
}
exportdefaultlistitemascomponentclass
完美解决