【问题标题】:ReactJS: Objects are not valid as a React childReactJS:对象作为 React 子对象无效
【发布时间】:2021-01-19 08:05:19
【问题描述】:

我目前正在使用 React 和 Firebase 开发一个消息传递应用程序。我正在使用 React Hooks 来使用 state 进行存储和通道。下面的代码就是那个的实现

const [channels, setChannels] = useState([]);

以下代码用于从 firebase 数据库中获取频道

useEffect(() =>{
 db.collection("channels").onSnapshot((snapshot) => 
    setChannels(
      snapshot.docs.map((doc) => ({
        id: doc.id,
        channel : doc.data(),
      }))
    )
  );
}, []);

并使用以下代码渲染页面中的频道

<div className=".sidebar__channelsList">
  {channels.map(({id , channel }) => (
    <SidebarChannel
      key={id} 
      id={id} 
      channelName={channels.channelName} 
    />
  ))}
</div>

SidebarChannel.js

function SidebarChannel(id,channelName) {
    return (
      <div className="sidebarChannel">
      <h4>
      <span className="sidebarChannel__hash">#</span>
      {channelName}
    </h4>
  </div>
}

所以我的问题是我在运行此代码时遇到错误,无法弄清楚其中有什么问题。错误是

【问题讨论】:

  • 可能有错字?它不是channels.channelName,而是channel(没有“s”)。无论如何,错误很明显:您正在渲染一个不允许的空对象。
  • 不,我只是忘了在函数中添加一些 {}

标签: reactjs firebase web


【解决方案1】:

你正在使用解构,所以 SidebarChannel 组件应该是:

function SidebarChannel({ id, channelName }) {
    return (
      <div className="sidebarChannel">
      <h4>
      <span className="sidebarChannel__hash">#</span>
      {channelName}
    </h4>
  </div>
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2018-05-27
    • 2021-10-17
    • 2017-02-09
    • 2018-10-18
    相关资源
    最近更新 更多