第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

TypeError:無法讀取未定義的屬性“地圖”,在反應掛鉤 crud 應用程序中

TypeError:無法讀取未定義的屬性“地圖”,在反應掛鉤 crud 應用程序中

溫溫醬 2022-05-22 11:16:08
我正在使用 React.js 開發(fā)一個簡單的 crud 應用程序,當我嘗試顯示我從中獲得的事件列表時遇到了這個問題:“TypeError: Cannot read property 'map' of undefined”:http: //127.0.0.1:8000/api/events(以json格式顯示事件列表)。這是代碼:import React, { Component } from 'react';import Event from './Event';import axios from 'axios';class DisplayEvent extends Component {  constructor(props) {    super(props);    this.state = { value: '', events: '' };  }  onDelete = id => {    // console.log("event list ", id);    this.props.onDelete(id);  };  onEdit = id => {    // console.log("event list ", id);    this.props.onEdit(id);  };  componentDidMount() {    axios.get('http://127.0.0.1:8000/api/events')      .then(response => {        this.setState({ events: response.data });      })      .catch(function (error) {        console.log(error);      })  };  render() {    const events = this.props.events;    return (      <div>        <h1>Events</h1>        <table className="table table-hover">          <thead>            <tr>              <td>ID</td>              <td>Event Name</td>              <td>Event Description</td>              <td width="200px">Actions</td>            </tr>          </thead>          <tbody>            {events.map(event => {              return (                <Event                  key={event.id}                  event={event}                  onDelete={this.onDelete}                  onEdit={this.onEdit}                />              )            })}          </tbody>        </table>      </div>    )  }}export default DisplayEvent;
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻1893條經(jīng)驗 獲得超10個贊

您應該使用state而不是props因為您將 API 響應設置為state

  render() {
      const { events } = this.state;
    ...


查看完整回答
反對 回復 2022-05-22
?
米脂

TA貢獻1836條經(jīng)驗 獲得超3個贊

  1. 在狀態(tài)上設置events為空數(shù)組

  2. 從 state 而不是 props 中讀取事件:

  3. (可選)使用loadingstate 顯示加載器并確定何時獲取數(shù)據(jù)。

class DisplayEvent extends Component {

  constructor(props) {

    super(props);

    this.state = { value: '', loading: true, events: [] }; // use array here

  }


  componentDidMount() {

    this.setState({ loading: true });

    axios

      .get('http://127.0.0.1:8000/api/events')

      .then(response => {

        this.setState({ events: response.data, loading: false });

      })

      .catch(function(error) {

        console.log(error);

        this.setState({loading: false});

      });

  }


  render() {

    const { events, loading } = this.state; // get events from the state

    return (

      <div>

        <h1>Events</h1>

        <table className="table table-hover">

          <thead>

            <tr>

              <td>ID</td>

              <td>Event Name</td>

              <td>Event Description</td>

              <td width="200px">Actions</td>

            </tr>

          </thead>

          <tbody>

            {loading ? (

              <p>Loading events...</p>

            ) : (

              events.map(event => {

                return <Event key={event.id} event={event} onDelete={this.onDelete} onEdit={this.onEdit} />;

              })

            )}

          </tbody>

        </table>

      </div>

    );

  }

}


查看完整回答
反對 回復 2022-05-22
?
江戶川亂折騰

TA貢獻1851條經(jīng)驗 獲得超5個贊

events如果 API 返回的數(shù)據(jù)是,則設置一個空數(shù)組undefined。現(xiàn)在您還沒有添加條件來處理這種情況。如果您undefined從響應中獲得一個不是數(shù)組的值,這就是它顯示此錯誤的原因。


        this.setState({ events: response.data || [] });

  componentDidMount() {

    axios.get('http://127.0.0.1:8000/api/events')

      .then(response => {

        this.setState({ events: response.data || [] });

      })

      .catch(function (error) {

        console.log(error);

      })

  };

更新


const events = this.props.events || [];


查看完整回答
反對 回復 2022-05-22
  • 3 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號