📝

React Componentでmapのネストでつまづいたのでメモ

2023/01/26に公開

半日ほどつまづいたので…

mapをネストしたらレンダリングされなかった

Reactのコンポーネントでオブジェクトが入ったリスト(配列)をレンダリングしようとしていました。

foo.tsx
import React from "react";

const list = [
{ 
     category: "スーパー",
     todoList: [
               {title: "牛乳を買う",date: "2023/02/01",rating: "低"},
               {title: "米を買う",date: "2023/02/01",rating: "中"},
             ]
},
{ 
     category: "駅",
     todoList: [
               {title: "定期券更新",date: "2023/01/31",rating: "高"}
             ]
},
]

const Taste: React.FC = () => {
  return (
  <>
  {list.map((item) => {
    item.map((todo, i) =>{
      return (
       <Todo key={i}>
         <Icon category={item.category} />
         <TodoTitle>{todo.title}</TodoTitle>
       </Todo>
      )
    })
  })}
  </>
 )

なぜレンダリングされなかったのか

returnの記述が足りていませんでした。

foo.tsx
// 省略
const Taste: React.FC = () => {
  return (
  <>
  {list.map((item) => {
    return item.map((todo, i) =>{ // ←return が必要
      return (
       <Todo key={i}>
         <Icon category={item.category} />
         <TodoTitle>{todo.title}</TodoTitle>
       </Todo>
      )
    })
  })}
  </>
 )

いつか忘れてしまいそうなのでメモします。

Discussion