RenderItems не определен no-undef внутри возврата

#javascript #django #reactjs #django-rest-framework

#javascript #django #reactjs #django-rest-framework

Вопрос:

Привет, ребята, я новичок в reactjs и я пытаюсь получить объект response data, чтобы он мог отображаться в веб-приложении для просмотра пользователями, вместо того, чтобы они проверяли страницу и переходили в сеть / консоль, чтобы увидеть ответ об ошибке загрузки файла name = ‘title’, поэтому я решил использовать приведенную ниже функцию, чтобы иметь возможность выдавать мне ответ данных, и я продолжаю получать эту ошибку ‘renderItems не определен’ нет-undef Вот пример кода:

 import React from "react";
import PropTypes from "prop-types";
import axios from 'axios'
import { Card,} from "shards-react";

class Uploaddatastore extends React.Component {

  constructor(props) {
    super(props);

    this.state = {
      UploadNotification: []
    }
  }
  componentDidMount(){
    let notificationComponent = this;
    axios.get("http://127.0.0:8000/uploads/file_upload/")
      .then(function (response) {
        console.log(response);
        console.log(response.data);

        notificationComponent.setState({
          UploadNotification: response.data.items
        });

      })
      .catch(function (error) {
        console.log(error);
      });
  }
render() {
      if (this.state.UploadNotification.length) {
        let renderItems = this.state.UploadNotification.map(function(item, i) {
          return <li key={i}>{item.title}</li>
        });
      }
    return (
     <div>
       <span className="text-danger"> {renderItems} </span>
     </div>
    );
  }
};
export default Uploaddatastore;
  

Комментарии:

1. let ограничен ли объем блока. Переместите этот оператор за пределы if . (На самом деле вам, похоже, вообще не if нужен.)

2. Привет, также был бы признателен, если бы вы могли помочь создать функциональность, позволяющую представлять ответ консоли на странице для пользователя, возможно ли это?

Ответ №1:

Вы неправильно определили renderItems переменную. Это было ограничено if блоком. Объявите его перед if вместо:

 render() {
    let renderItems;
    if (this.state.UploadNotification.length) {
      renderItems = this.state.UploadNotification.map(function(item, i) {
          return <li key={i}>{item.title}</li>
      });
    }
    return (
     <div>
       <span className="text-danger"> {renderItems} </span>
     </div>
    );
  }
};
  

Комментарии:

1. Кристиан Фриц, спасибо, это сработало, хотя я хотел бы, если бы вы могли помочь мне извлечь объект из сети / консоли и представить его на странице WEBAPP для пользователя, возможно ли это?