如何在JSX中隐藏一些元素

时间:2017-05-25 08:10:29

标签: reactjs react-native hide react-jsx

我想在我的应用程序上显示一份“餐馆标签”列表。所以基于下面的代码,我能够做到这一点。因此,作为代码的结果,我将显示一个列表或一组mealTag。

问题:我想只显示前2个标签,隐藏其余部分并将链接'显示更多信息,当我点击它时会显示其余部分。我怎么能在ReactJS中做到这一点?

return (
  <View {...otherprops} style={styles.mainContainer} elevation={3}>
    <View style={styles.contentContainer}>
      <MealTagsSection mealTags={post.mealTags} />
    </View>
type MealTagsProps = {
  mealTags: Array<MealTag>;
};

export function MealTagsSection(props: MealTagsProps) {
  let {mealTags} = props;

  return (
    <View style={styles.mealTagsContainer}>
      {
        mealTags.map((mealTag) => {
          let tagStyle = '';
          if (mealTag.category === 1) {
            tagStyle = styles.tag_healthy;
          } else {
            tagStyle = styles.tag_improve;
          }
          return (
            <View style={tagStyle}>
              <Text style={styles.tagText}>{mealTag.description}</Text>
            </View>
          );
        })
      }
    </View>
  );
}

2 个答案:

答案 0 :(得分:1)

您可以在州使用设置可见计数

this.state= {
   visibleCount:2
}

并在map之前使用切片函数,例如

mealTags.slice(0, this.state.visibleCount).map(...)

然后,您可以在按钮onClick功能上增加可视计数。

答案 1 :(得分:0)

另一种选择是跟踪.map

中的索引
 mealTags.map((mealTag, idx) => ...

并相应地设计风格,例如当idx&gt; = 2

display:none