如何使用onPress将样式应用于特定的ListItem?

时间:2018-09-08 22:03:22

标签: react-native react-native-flatlist

我是React Native的新手,到目前为止,我的大部分进步都归功于我疯狂的复制粘贴技能。

我已经搜索了farwide,所以不要告诉我Google。

目标:我希望它仅针对单个订单项切换删除线onPress。

据我所知,当用户按下lasso_model <- glmnet(x = as.matrix(lasso), y = as.matrix(lasso_target), standardize=TRUE, alpha=1) 时:

  • 它应该切换TouchableOpacity > ListItem
  • 这将添加strikeStatus
  • 基于styles.strike中的this.state.strikeStatus ? styles.strike : false测试。
具有讽刺意味的是,我可以让它在最初加载时适用于所有ListItem,但是我无法切换它。请告知。

(有人说它在TouchableOpacity和ListItem中都放置了titleStyle,但这对我来说没有意义。如果可行,请提供更详细的说明。)

Expo Snack是here

onPress

1 个答案:

答案 0 :(得分:1)

首先,您要对所有项目应用相同的样式,因为状态变量hitStatus是在您按的任何项目上设置的,然后将其用于所有项目。

要实现所需的功能,可以向在selected上初始化的名为false的项目对象添加属性。

titleStyle将是:

titleStyle={[
    styles.item,
    item.selected && styles.strike
]}

然后您像这样呼叫onPress

onPress={() => this.toggleStrike(index)}

要使用index参数,您需要将其添加到renderItem函数中

toggleStrike内,将传递的索引处的selected值更改为项目的true

toggleStrike(index) {
    this.setState((prevState) => {
        prevState.items[index].selected = !prevState.items[index].selected;
        return { ...prevState }
    });
}