为什么 React 可以显示对象而不显示其成员?

发布于 2025-01-11 09:29:25 字数 1604 浏览 0 评论 0原文

我正在尝试了解 MERN 堆栈。到目前为止,我已经成功查询数据库并获取 API 端点上的数据,但在将其显示在前端时遇到一些问题。

这是我的前端代码:

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component<{}, {res:any}> {
  constructor(props:any) {
    super(props);
    this.state = {res: Array};
}
  callAPI() {
    fetch("http://localhost:5000")
    .then(res => res.json())
    .then(json => this.setState({res: json}));
  }
  componentWillMount() {
      this.callAPI();
  }
  render() {
  // WORKS
  console.log(this.state.res[0]);
  // DOESN'T WORK
  console.log(this.state.res[0].name);
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.tsx</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  )};
}

export default App;

如您所见,它只是默认 React 主页的修改版本。我刚刚添加了一个状态并从后端获取数据。

当我尝试 console.log 我的数据时,问题就出现了。

如果我 console.log(this.state.res[0]),一切都很好,我得到 { "_id": "62207b47d40bca8ea8b60560", "name": "Patère", "checked": false, "links": [ "" ] } 在我的控制台中。但是,如果我尝试仅记录名称,则会收到 Uncaught TypeError: this.state.res[0] is undefined,这很奇怪,因为它设法显示 this.state.res [0] 以前还好吗?

这是什么原因造成的?我该如何解决?

先感谢您。

I'm trying to wrap my head around the MERN stack. So far I've managed to query my database and get the data on an API endopoint, but I'm having some trouble getting it to show up on my front-end.

Here's my fronted code :

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component<{}, {res:any}> {
  constructor(props:any) {
    super(props);
    this.state = {res: Array};
}
  callAPI() {
    fetch("http://localhost:5000")
    .then(res => res.json())
    .then(json => this.setState({res: json}));
  }
  componentWillMount() {
      this.callAPI();
  }
  render() {
  // WORKS
  console.log(this.state.res[0]);
  // DOESN'T WORK
  console.log(this.state.res[0].name);
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.tsx</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  )};
}

export default App;

As you can see it's just a modified version of the default React homepage. I just added a state and fetching data from my backend.

The problem comes when I try to console.log my data.

If I console.log(this.state.res[0]), everything is fine, and I get { "_id": "62207b47d40bca8ea8b60560", "name": "Patère", "checked": false, "links": [ "" ] } in my console. But if I try to only log the name, I get Uncaught TypeError: this.state.res[0] is undefined, which is weird, since it managed to display this.state.res[0] just fine before ?

What's causing this and how can I fix it ?

Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文