簡體   English   中英

React 在使用 Axios 時在瀏覽器日志中拋出“Objects are not valid as a React child”錯誤

[英]React is throwing a “Objects are not valid as a React child” error in browser log while using Axios

我對 React 完全陌生。 我正在嘗試顯示來自我的 Web API 的數據。

我在 Chrome 的控制台中遇到錯誤

未捕獲(承諾中)錯誤:對象作為 React 子對象無效(發現:object 帶有鍵 {nameId,modelName,tblModelDetails})。 如果您打算渲染一組子項,請改用數組。

我認為錯誤是因為我的 JSON 中有一個嵌套數組。 我正在嘗試將數據顯示到瀏覽器上的列表中

這是我的 Json 在 Postman 中的顯示方式:

[
    {
        "modelId": 18,
        "typeId": 2,
        "rangeId": 1,
        "nameId": 1,
        "scaleId": 1,
        "info": "info",
        "picture": "Picture",
        "partNumber": 123,
        "amountOwned": 3,
        "modified": false,
        "limitedAddition": true,
        "datePurchase": "2021-01-01T00:00:00",
        "pricePaid": 10.0000,
        "upc": 99999,
        "modelSeries": null,
        "name": {
            "nameId": 1,
            "modelName": "Xerion",
            "tblModelDetails": []
        },
        "range": {
            "rangeId": 1,
            "modelRange": "Class",
            "tblModelDetails": []
        },
        "scale": {
            "scaleId": 1,
            "modelScale": "1:32",
            "tblModelDetails": []
        },
        "type": {
            "typeId": 2,
            "modelType": "Tractor",
            "tblModelDetails": []
        }
    }
]

我一直在嘗試使用的 React 代碼是:


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

class App extends Component {
  state = {
    values: []
  }
  componentDidMount(){
    
    axios.get('https://localhost:5001/api/Model')
      .then((response) => {
        console.log(response)
        this.setState({
          values: response.data
        })
      })
    }

  render(){
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <ul>
            {this.state.values.map((values: any) => (
              
              <li>{values[0]}</li>
              

            ))}
          </ul>
        </header>
      </div>
    );
  }
  }


export default App;

關於如何讓我的數據顯示的任何想法?

那樣做

我只是顯示您的 json 的pricePaid


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

class App extends Component {
  state = {
    values: []
  }

  componentDidMount(){
    axios.get('https://localhost:5001/api/Model')
      .then((response) => {
        console.log(response)
        this.setState({
          values: response.data
        })
      })
    }

  render(){
    if (!this.state.values.length) {
        return null;
    }

    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <ul>
            {this.state.values.map((value: any) => (
              
              <li>{value.pricePaid}</li>
              

            ))}
          </ul>
        </header>
      </div>
    );
  }
}


export default App;

您不能以這種方式渲染 object,如果您只想渲染它以進行調試,則可以使用JSON.stringify ,如果要實際渲染數據,則需要分別顯示每個原始值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM