使用 JSON 数据进行 React-Native 条件渲染

普通话

我有看起来像这样的数据:

// items.json    
[
      {
        "key": 1,
        "category": "Fruits",
        "colors": [
          {
            "color": "red",
            "favourite": "apple"
          },
          {
            "color": "orange",
            "favourite": "orange"
          }
        ]
      }, 
      {
        "key": 2,
        "category": "Vegetables",
        "colors": [
          {
            "color": "orange",
            "favourite": "carrot"
          },
          {
            "color": "green",
            "favourite": "celery"
          }
        ]
      }
    ]

但它可以在每个数组中拥有无限数量的对象。我想要做的是最初显示类别,我是这样做的:

import Items from './items.json';

// 然后我在渲染方法中使用它

    render() {
        var items= items;
    return (
         {items.map(item =>
             <TouchableOpacity
                 key={item.key}>
                <Text>
                  {item.category}
                </Text>
             </TouchableOpacity>
          )}
    )
}

现在,当按下类别时,我想隐藏类别并显示颜色。然后当按下颜色时,我想隐藏颜色并显示最喜欢的颜色。

我曾尝试使用 if else 语句执行此操作,但是如果替换数据,它将不起作用,并且正如我所提到的,这个 json 对象可能非常大。请帮忙!

六月 L。

在您的状态中声明两个数组,一个用于存储原始数据,另一个用于根据按下的项目存储过滤后的数据。

state = {
  items: items, // original data
  data: items, // will filter data and display using .map()
  categoryIndex: 0, // index of the selected category
};

添加onPress到您的TouchableOpacity并传递按下的项目的类型。

{this.state.data.map((item, index) => (
  <TouchableOpacity
    onPress={() =>
      this.onItemPress(
        item.category ? 'category' : item.color ? 'color' : 'favourite',
        index
      )
    }
    key={item.key}>
    <Text>{item.category || item.color || item.favourite}</Text>
  </TouchableOpacity>
))}

onItemPress,基于被按下的项目更新 state.data

onItemPress = (type, index) => {
  if (type === 'category') {
    this.setState({
      data: this.state.items[index].colors,
      categoryIndex: index,
    });
  }

  if (type === 'color') {
    this.setState({
      data: [
        {
          favourite: this.state.items[this.state.categoryIndex].colors[index]
            .favourite,
        },
      ],
    });
  }

  if (type === 'favourite') {
    this.setState({
      data: this.state.items,
      categoryIndex: 0,
    });
  }
};

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在React Native中使用false值进行条件渲染的问题

使用React渲染JSON数据

如何在React Native中使用switch执行条件渲染?

在React Native中使用条件渲染的最佳方法

使用 React-Native 中的其他数据从以 base64 存储的 JSON 渲染图像

React Native中的条件渲染

React Native Redux条件渲染

获取 JSON 并使用 react 进行渲染

使用tsx在React应用程序中进行条件渲染

使用 React useEffect 获取数据和条件渲染

React Native - 如何使用地图数据渲染行?

如何使用 FlatList 在 react-native 中渲染异构数据?

根据React Native中的条件渲染元素

对本机基本选择器的项目进行条件渲染[React Native]

使用条件渲染的 React Native 仍然尝试访问状态,即使设置为 false

如何使用 react-native-dropdown 获取数据 JSON?

使用JavaScript React Native从API中的json对象提取数据

如何在React Native中使用数组映射JSON数据

如何使用setState在React Native中存储JSON数据

在React Native中使用JSON数据显示搜索输出

在React Native中渲染嵌套的json对象

使用 reactjs 进行条件渲染

如何使用地图在React Native中过滤和添加来自json本地文件的数据的条件语句

重复的JSON数据-React Native

使用 react-navigation 进行 react native 时组件重新渲染

如何在 React Native 中延迟渲染或在找到数据后进行渲染

兑现诺言后进行渲染[React Native]

使用React进行API调用以获取并渲染数据

使用React渲染JSON数据时如何执行子查询?