【问题标题】:React Native Handle Nested Object with Map and Display使用地图和显示反应原生句柄嵌套对象
【发布时间】:2020-12-06 21:12:23
【问题描述】:

如何处理带有地图的嵌套对象,以便在反应原生时显示在平面列表或文本或其他组件上。我尝试使用文本和平面列表显示,但没有用,我想这样显示

这是我的代码,

const Schedule = () => {
const [resp, setData] = useState([]);
 useEffect(() => {
      const fetchData = async () => {
        const respData1 = await axios(
          `http://sh3ll.my.id/api/data3.json`
        );  
        setData({ data: respData1.data.data });  
      };
        fetchData();
    },[]);

    console.log('render');
    if (resp.data) {
      console.log("d==>", resp);
    }

    return (
       <View style={{paddingTop:20}}>
            { resp.data && resp.data.map((items,i)=> 
                <Text key={i}>{`${items.date} ${items.time}`}
                  {items.list.map((sub)=>{ `${sub.description}`
                  })}
                </Text> 
             ) }
        
        {/* <FlatList data={resp} 
        keyExtractor={(x,i)=>i}
        renderItem={({item})=>
        ....?? }
        /> */}

      </View>
    )
}

export default Schedule

【问题讨论】:

  • 能不能把请求中的嵌套对象也放进去?
  • 如果我把 ${items.list} 放在 ${items.time} 之后,你会看到对象在那里

标签: react-native promise nested-loops react-native-flatlist


【解决方案1】:

查看您的代码,我假设您的数据对象如下所示:

const resp = {
    data: [
      {
        date: "date 1",
        time: "time 1",
        list: [{ description: "desc 1" }, { description: "desc 2" }]
      },
      {
        date: "date 2",
        time: "time 2",
        list: [{ description: "desc 1" }, { description: "desc 2" }]
      }
    ]
  };

如果正确,您可以通过调用自己的“createDescription”函数来展平您的对象,该函数将负责呈现描述:

function createDescription(listItem) {
    return <p>{listItem.description}</p>;
}

  return (
    <table style={{ paddingTop: 20 }}>
      {resp.data &&
        resp.data.map((items, i) => (
          <tr key={i}>
            <td>{items.date}</td>
            <td>{items.time}</td>
            <td>{items.list.map((sub) => createDescription(sub))}</td>
          </tr>
        ))}
    </table>
  );

现在您的 HTML 已正确呈现,您可以使用 CSS 修复布局。

【讨论】:

  • 感谢数据已经出现,但是我在 react native prnt.sc/vwuula 中遇到了

    的问题

  • 你可以尝试使用片段( > )而不是

    吗?我不习惯使用 React Native,但这应该可以解决问题。
  • 好的,我已经设法解决了这个问题:style = {{flexShrink: 1, width: '20% '}} 你可以看到prnt.sc/vx213e 它是完美的。谢谢你,兄弟。你帮助了我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多