与array.map奇怪的输出

时间:2019-07-06 20:58:09

标签: javascript react-native

我正在构建一个简单的React Native移动应用程序,并从AsyncStorage获取数据。这是一个在安装组件时获取数据的函数

  getClassData = async id => {
    const allRegs = (await AsyncStorage.getItem("regs")) || "[]";
    const items = JSON.parse(allRegs);
    console.log("All REGS", items);
    const classData = items.map((y, i) => (
    <View key={i}>
     <Text>{y.email}, {y.name}</Text>
      </View>
    ));
    console.log('ALL DATA',str)
  };

第一个输出是正常的,看起来像这样。

All REGS
   Array [
     Object {
       "classID": 1,
        "email": "Mp@fgh.com",
        "name": "Allen",
          },
       ]

但是在控制台中显示的地图功能之后是

所有数据

  Array [
   Object {
   "$$typeof": Symbol(react.element),
   "_owner": null,
   "key": "0",
   "props": Object {
     "children": Object {
    "$$typeof": Symbol(react.element),
    "_owner": null,
    "key": null,
    "props": Object {
    ......

为什么这不只是给我期望的输出(只是简单的输出,其中包含视图和文本中的数据?谢谢。

2 个答案:

答案 0 :(得分:1)

AsyncStorage返回一个承诺。准备好后,您需要调用.then()来获取值。

getClassData = async id => {
    await AsyncStorage.getItem("regs").then((allRegs) => {
        const items = JSON.parse(allRegs);
        console.log("All REGS", items);
        const classData = items.map((y, i) => {
            return(
                <View key={i}>
                    <Text>{y.email}{y.name}</Text>
                </View>
            );
        });
        console.log('ALL DATA', str);
    });
};

答案 1 :(得分:0)

const items = [
       {
       name:'aaaa',
       email:'aaaa@gmail.com'
        },
       {
       name:<View>aksjdha</View>,
       email:'bbbb@gmail.com'
        },
       <View>qwds</View>
     ]


    let classData = items.map((y, i) => (
    <View key={i}>
     <Text>{y.email}, {y.name}</Text>
      </View>
    ));

您的数组对象中有类似jsx的内容,请检查一次。