javascript - React - 访问对象集合

标签 javascript reactjs firebase

我正在从 Firebase 下载数据,它采用对象集合的形式。我想根据 props.id 值从那里显示某些项目。

我是这样做的:

export default class Ingredient extends React.Component {
  constructor(props) {
    super(props);

    this.id = this.props.id;
    this.db = new Firebase('https://xxx.firebaseio.com/ingredients');

    this.state = {
      loaded: false,
      data: []
    };
  }

  componentDidMount() {
    this.db.on('value', (data) => {
      this.setState({
        loaded: true,
        data: data.val()
      });
    });
  }

  getElement() {
    return this.state.data[this.props.id];
  }

  render() {
    return (
      /*  - {this.state.data[this.props.id].name} */
      <strong>
        {this.getElement()}
      </strong>
    )
  }
}

不幸的是,React 返回一个错误:

Uncaught Invariant Violation: Objects are not valid as a React child

我不太明白我在这里做错了什么,有人可以帮我吗?

最佳答案

getElement 方法返回接收到的数据,它是一个object 并且不是有效的 React 元素,这意味着它不能被直接渲染。只有具有自然字符串表示的 React 元素或原始值可以在树中呈现,这意味着如果您的数据具有 name 字符串属性,这将起作用:

<strong>
 {this.getElement().name}
</strong>

关于javascript - React - 访问对象集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36543807/

相关文章:

javascript - Canvas2Image 下载图像到服务器中的文件夹

javascript - 为什么 continue 语句在此循环中不起作用?

javascript - react Hook : Stateless component VS Class component in the era of Hooks - which is better and recommended?

ios - Swift 3 如何在 firebase 中获取特定的用户 ID

javascript - Twilio 不在 firebase 云功能内发送短信

android - 可以将 child 批量添加到 Firebase ref,每个 child 都有自己的优先级吗?

javascript - 使div 'fullscreen' onClick?

css - 无法修复 Antd 模态高度

node.js - 如何处理ExpressJS Rest API中的错误

javascript - 字符串中间的正则表达式验证空间