JSX表达式必须有一个父元素,ts(2657)React为本机

j91ykkif  于 2023-03-19  发布在  React
关注(0)|答案(3)|浏览(282)

我是新的React Native,并尝试了一切,并不断得到以下错误
JSX表达式必须有一个父元素。ts(2657)
我正尝试在平面列表中显示来自json的信息。
这是我的代码。

render() {
  if (this.state.isLoading) {
    return (
      <View style={{flex: 1, paddingTop: 20}}>
        <ActivityIndicator />
      </View>
    );
  }
  return (
    <View>
      <View style={{backgroundColor: '#808080'}}>
       
            <Text style={styles.MainText}>Sermons</Text>
       
       </View>
      <FlatList style={{paddingTop: 30}}
        data={ DATA }
        ItemSeparatorComponent = {this.FlatListItemSeparator}
        renderItem={this._renderItem} />   
    </View>
  );
}
_renderItem = ({item}) => {

  return(
    <View style={{flex:1, flexDirection: 'row', paddingLeft: 10}}>
       <Image source={require('./church.png')} style={{width: '100%', height: '25%'}} />
        </View>
        <View style={{flex: 1, paddingLeft: 20}}>
          <Text>{item.title}</Text>
      </View>

  );
}
}

第33行);似乎是导致问题的原因,但我不知道原因。

ckx4rj1h

ckx4rj1h1#

您不能渲染相邻的元素。它们必须有一个父元素。React.Fragment是常见的解决方案:

return(
  <>
    <View style={{flex:1, flexDirection: 'row', paddingLeft: 10}}>
      <Image source={require('./church.png')} style={{width: '100%', height: '25%'}} />
    </View>
    <View style={{flex: 1, paddingLeft: 20}}>
      <Text>{item.title}</Text>
    </View>
  </>
);

<></><React.Fragment></React.Fragment>的缩写。

knsnq2tg

knsnq2tg2#

你有2个视图组件作为回报。你应该有1个父组件,这样你就可以把它们 Package 成一个react片段。

return(
   <>
     <View style={{flex:1, flexDirection: 'row', paddingLeft: 10}}>
       <Image source={require('./church.png')} style={{width: '100%', height: '25%'}} />
     </View>
     <View style={{flex: 1, paddingLeft: 20}}>
          <Text>{item.title}</Text>
     </View>
   </>

  );
6rqinv9w

6rqinv9w3#

您需要添加容器View

_renderItem = ({item}) => {

  return(
<View>
    <View style={{flex:1, flexDirection: 'row', paddingLeft: 10}}>
       <Image source={require('./church.png')} style={{width: '100%', height: '25%'}} />
        </View>
        <View style={{flex: 1, paddingLeft: 20}}>
          <Text>{item.title}</Text>
      </View>
 </View>

  );
}

相关问题