You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native的FlatList中使用if条件动态渲染按钮

在JSX中实现条件渲染不需要单独写if分支,直接用三元运算符或者逻辑与运算符即可实现你要的效果,修改后的FlatList代码如下:

<FlatList
  data={this.state.user}
  keyExtractor={item => item.id}
  renderItem={({ item, index }) => {
    return (
      <View>
        <View style={{ flexDirection: 'row', marginTop: 10, }}>
          <Image style={{...}} source={{ uri: '' }} />
          <View>
            <Text style={{..}}>{item.full_name}</Text>
              <View>
                {/* 用三元运算符判断status值,按需渲染对应按钮 */}
                {
                  item.status === 0 ? 
                  (
                    <View>
                      <TouchableOpacity style={..} onPress={this.sendRequest}>
                        <Text style={styles.submitButtonText}>Add Friend</Text>
                      </TouchableOpacity>
                    </View>
                  ) : (
                    <View>
                      <TouchableOpacity style={styles.submitButton}>
                        <Text style={styles.submitButtonText}>Remove</Text>
                      </TouchableOpacity>
                    </View>
                  )
                }
                <View style={styles.space} />
              </View>
            </View>
          </View>
        </View>
      )
    }}
  />

实现说明

  • 核心逻辑就是利用JSX支持嵌入表达式的特性,item.status === 0判断成立时返回加好友按钮的JSX结构,不成立则返回删除好友按钮的结构,不用把两个按钮都预先写在页面里。
  • 注意不要把判断运算符===写成赋值运算符=,你原有代码里Text标签内的{item.status = 0 }是错误写法,会直接修改item的status值,需要删掉。
  • 如果你需要保留两个按钮的独立结构,也可以用逻辑与运算符分别控制显隐:
// 写法二:逻辑与判断
{item.status === 0 && (
  <View>
    <TouchableOpacity style={..} onPress={this.sendRequest}>
      <Text style={styles.submitButtonText}>Add Friend</Text>
    </TouchableOpacity>
  </View>
)}
<View style={styles.space} />
{item.status !== 0 && (
  <View>
    <TouchableOpacity style={styles.submitButton}>
      <Text style={styles.submitButtonText}>Remove</Text>
    </TouchableOpacity>
  </View>
)}
  • 额外注意你原代码中onPress的写法() => this.sendRequest不需要额外包一层箭头函数,直接写onPress={this.sendRequest}即可,要是方法需要传参再包箭头函数。

内容的提问来源于stack exchange,提问作者raja ali haider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 13:18:04