【问题标题】:Haw to map through all the names in this array如何映射此数组中的所有名称
【发布时间】:2020-11-03 09:46:59
【问题描述】:

import React, { useState } from 'react';
import {View, StyleSheet, Button, FlatList, SectionList} from 'react-native';
import { Item, Input,  Container, Header, List, ListItem, Text, Left, Right, Icon } from "native-base";

const NigLawList= ({navigation}) => {
  const [people, setPeople] = useState([
      {Law: "Evidence Act", id: "1",
      part:[ {name: "Introduction 1", meaning: "how are you doing"},
      {name: "Introduction 2", meaning: "how are you doing"}
      
    ]},

])
  
    return (
      <FlatList
      numColumns={1}
      keyExtractor={(item) => item.id} 
      data={people} 
      renderItem={({ item }) => (
      <List >

          <ListItem onPress={() => navigation.navigate('NigLawParts', item)}>
           
              <Text  style={{
            fontSize: 20,
            }}>{item.Law}</Text>
             
          </ListItem>

          </List>
      )}





      keyExtractor={(item, index) => index.toString()}
    />

    );
  }
  
  export default NigLawList;

请我如何在反应原生平面列表中映射此数组中的所有“名称”。我只是想显示部分下方的“名称”。请我真的需要帮助!我是原生反应的新手。

【问题讨论】:

  • 请考虑格式化您的源代码并更正您问题中的拼写错误。
  • 你想在哪里显示名字?在同一个列表项中还是应该是一个单独的列表?你的要求不明确
  • 非常感谢您的回复。我想在同一个列表中显示它。请原谅我..我是新来的反应本地人。

标签: javascript arrays reactjs react-native react-native-flatlist


【解决方案1】:

以下是如何呈现Law 键的内容以及part 数组中的相应名称。

我省略了ListListItem 组件。

代码:


const NigLawList = ({ navigation }) => {
  const [people, setPeople] = useState([
    {
      Law: "Evidence Act",
      id: "1",
      part: [
        { name: "Introduction cc", meaning: "how are you don" },
        { name: "Introduction bb", meaning: "how are you don" },
      ],
    },
  ]);

  return (
    <SafeAreaView style={{ marginTop: 20 }}>
      <FlatList
        numColumns={1}
        keyExtractor={(item) => item.id}
        data={people}
        renderItem={({ item }) => (
          <View>
            <Text
              style={{
                fontSize: 20,
              }}
            >
              {item.Law}
            </Text>
            {item.part.map((name) => (
              <Text>{name.name}</Text>
            ))}
          </View>
        )}
        keyExtractor={(item, index) => index.toString()}
      />
    </SafeAreaView>
  );
};

export default NigLawList;

还要阅读文档以获取更多信息:FlatList

输出:

带参数导航到下一个屏幕的代码:


import React, { useState } from "react";
import {
  StyleSheet,
  Text,
  View,
  FlatList,
  TouchableOpacity,
} from "react-native";
import { NavigationContainer, StackActions } from "@react-navigation/native";
import { createStackNavigator } from "@react-navigation/stack";

import { SafeAreaView } from "react-native-safe-area-context";

const Stack = createStackNavigator();

const NigLawList = ({ navigation }) => {
  const [people, setPeople] = useState([
    {
      Law: "Evidence Act",
      id: "1",
      part: [
        { name: "Introduction cc", meaning: "how are you don" },
        { name: "Introduction bb", meaning: "how are you don" },
      ],
    },
  ]);

  return (
    <SafeAreaView style={{ marginTop: 20 }}>
      <FlatList
        numColumns={1}
        keyExtractor={(item) => item.id}
        data={people}
        renderItem={({ item }) => (
          <TouchableOpacity
            onPress={() => navigation.navigate("Names", { parts: item.part })}
          >
            <View>
              <Text
                style={{
                  fontSize: 20,
                }}
              >
                {item.Law}
              </Text>
              {/* {item.part.map((name) => (
                <Text>{name.name}</Text>
              ))} */}
            </View>
          </TouchableOpacity>
        )}
        keyExtractor={(item, index) => index.toString()}
      />
    </SafeAreaView>
  );
};

const NamesScreen = ({ navigation, route }) => {
  const { parts } = route.params;
  return (
    <SafeAreaView>
      {parts.map((part) => (
        <TouchableOpacity
          key={part.name}
          onPress={() =>
            navigation.navigate("Meaning", { meaning: part.meaning })
          }
        >
          <Text
            style={{
              fontSize: 20,
            }}
          >
            {part.name}
          </Text>
        </TouchableOpacity>
      ))}
    </SafeAreaView>
  );
};

const MeaningScreen = ({ route }) => {
  const { meaning } = route.params;
  return (
    <SafeAreaView>
      <Text
        style={{
          fontSize: 20,
          marginTop: 20,
        }}
      >
        {meaning}
      </Text>
    </SafeAreaView>
  );
};

export default function App() {
  return (
    <View style={styles.container}>
      <NavigationContainer>
        <Stack.Navigator>
          <Stack.Screen name="NigLawList" component={NigLawList} />
          <Stack.Screen name="Names" component={NamesScreen} />
          <Stack.Screen name="Meaning" component={MeaningScreen} />
        </Stack.Navigator>
      </NavigationContainer>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
});

输出:

【讨论】:

  • 肯坦你好!你能帮帮我吗?如何在新屏幕中传递“名称”并将其显示在该屏幕的另一个平面列表中。
  • 我已经能够将名称传递到另一个屏幕到另一个屏幕,但我可以在新列表中显示它们。
  • 现在我不在我的笔记本电脑旁,所以无法发送工作代码,我回家后会发布它。同时浏览此文档:reactnavigation.org/docs/params
  • 我希望您通过参数传递实现了导航,如果您还没有,请查看更新后的代码。
  • 这很好,先生。但是有一个小问题。名称在这里显示在一行中。我不显示为列表。
【解决方案2】:

下面是列表在我的模拟器中的简短屏幕 demo

【讨论】:

  • 在一行中删除两个names 删除外部&lt;Text&gt; 组件并仅在该容器中保留{parts.map((name) =&gt; ( &lt;Text key={name.name}&gt;{name.name}&lt;/Text&gt; ))}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 2014-08-23
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多