【问题标题】:React: Mapping an array of dataReact:映射数据数组
【发布时间】:2020-11-10 14:44:57
【问题描述】:

我正在尝试映射数组中的数据,但是,当我运行代码时,数据没有被映射。如果我记录数据(序列变量),它会记录我想要映射的变量(下面的屏幕截图)。有人对为什么没有映射数据有任何建议吗?

numberList() {
  const uid = this.state.user.uid;
    const serialRef = db.ref(uid + "/serials");
    
    serialRef.on("value", (serial_numbers)=> {
      const serials = [];
      serial_numbers.forEach((serial_number)=> {
        serials.push({s:serial_number.val()});
      });
      console.log(serials);
  return (
    <ul>
      {serials.map((number) => <li>{number}</li>)};
    </ul>
  );
    });

}
        render (){
        return (
          <button onClick={this.numberList}>Cards</button>
        )};

}

提前致谢!

【问题讨论】:

  • > 运行代码时数据未映射,您是如何注意到这一点的?
  • 当我点击按钮时,列表不会出现在页面上。

标签: javascript reactjs firebase-realtime-database


【解决方案1】:

从你的log 我假设地图应该如下以获得确切的数字。

 return (
    <ul>
      {serials.map((number) => <li>{number.s.serial}</li>)};
    </ul>
  );

【讨论】:

  • 感谢您的回答。但是,当我单击按钮时它仍然不显示值,只有数组被记录到控制台中。
【解决方案2】:

您正在映射的“数字”是对象(根据您附加的日志),但 React JS 不允许直接显示对象 - 您可能只想显示值。从对象数组生成视图时,您还应该包含一个键。正确的代码应该是这样的:

<ul>
      {serials.map((number, i) => <li key={i}>{number.s.serial}</li>)};
</ul>

【讨论】:

  • 感谢您的回复。但是当我点击按钮时,数据列表仍然没有出现在页面上。
  • 您有任何错误吗?是黑屏还是渲染了其他元素?
猜你喜欢
  • 2021-09-24
  • 2018-06-16
  • 1970-01-01
  • 2020-09-25
  • 2021-10-10
  • 1970-01-01
  • 2020-08-21
  • 2020-01-21
  • 1970-01-01
相关资源
最近更新 更多