类型错误:无法读取未定义 Nextjs 的属性“map”?

时间:2021-06-30 22:04:06

标签: reactjs next.js

无法读取未定义的属性 'map' 我不知道如何解决我是新手反应请帮我这个代码

  {rooms && rooms.length === 0 ? (
          <div className='alert alert-danger'>
            <b>No Rooms</b>
          </div>
        ) : (
          rooms.map((room) => <RoomItem key={room._id} room={room} />)
        )}

3 个答案:

答案 0 :(得分:1)

让我们颠倒这个逻辑。

如果房间已定义且其长度大于 0,则渲染房间。

否则,渲染“无房间”

{
  rooms?.length > 0 ? (
    rooms.map((room) => <RoomItem key={room._id} room={room} />)
  ) : (
    <div className="alert alert-danger">
      <b>No Rooms</b>
    </div>
  );
}

答案 1 :(得分:-1)

先添加: {if(!rooms) return}

答案 2 :(得分:-1)

将代码分解为基础,您就可以:

rooms

undefined&& 时,if (undefined) ​return "No Rooms" else return undefined.map(/*...*/) 短路(即,如果第一个操作数为 false,则跳过第二个操作数),代码现在等价于:

rooms&&

这就是您收到“无法读取未定义的属性映射”错误的原因。我怀疑您刚刚添加了 rooms && rooms.length > 1 ? ( // rooms.map ... ) : ( // No Rooms ... ) ,因为您最初“无法读取未定义的属性长度”。您应该尝试始终将“备份案例”放在 else 块中以避免此问题。

通过撤销检查来修复它:

{{1}}