Получите ошибку JSON проверочного списка в ReactJS - PullRequest
0 голосов
/ 16 февраля 2020

В моем тесте API он был запущен, как показано на рисунке ниже. но когда я пытаюсь кодировать в React. JS, идентификатор пользователя не может быть передан. В чем проблема?

enter image description here

Но когда я пытаюсь кодировать в переднем конце, идентификатор пользователя не может быть передан в API. Рассмотрим код ниже:

  constructor (props){
    super(props);
    const Users_id = localStorage.getItem('id');
    this.state ={
      users_id: Users_id,
      event_name: '',
      event_email: '',
      event_description: '',
      event_type: '',
      event_location: '',
      start_date: '',
      end_date: '',
      history: PropTypes.object.isRequired
    }
    this.create = this.create.bind(this);
    this.onChange = this.onChange.bind(this);
  }

  create(){
    // const loginEmail = localStorage.getItem('loginEmail');
    const Users_id = localStorage.getItem('id');
    this.setState({Users_id})
    // console.log(loginEmail)
    PostData('api/event/submit', this.state).then ((result) => {
        let responseJSON = result;
        console.log(responseJSON);
        console.log(this.state)

      });
   }

Ошибка, отображаемая в console.log (ответ JSON): enter image description here

// Обновлены PostData

    return new Promise((resolve, reject) => {
        fetch( BaseUrl+type, {
            method: "POST",
            body: JSON.stringify(userData),
            Accept: 'application/json',
            // mode: 'no-cors',
            headers: 
                { 
                    'Content-Type': 'application/json' 
                },
          })
        .then((response) => response.json())
        .then((responseJson) => {
            resolve(responseJson);
        })
        .catch((error)=>{
            console.error('Error:', error);
        })

    });

Ответы [ 2 ]

1 голос
/ 16 февраля 2020

вам нужно проверить, существует ли идентификатор пользователя в локальном хранилище, прежде чем вставлять его в реквизит

    super(props);
    const Users_id = localStorage.getItem('id') || '';
    this.state ={
      users_id: Users_id,
      event_name: '',
      event_email: '',
      event_description: '',
      event_type: '',
      event_location: '',
      start_date: '',
      end_date: '',
      history: PropTypes.object.isRequired
    }

, и когда вы хотите установитьState, вам нужно передать то же имя, которое вы использовали в состоянии

const Users_id = localStorage.getItem('id');
if(Users_id){
this.setState({users_id: Users_id})
}
1 голос
/ 16 февраля 2020

Storage.getItem возвращает строку. Идентификатор должен быть приведен к номеру

const Users_id = parseInt(localStorage.getItem('id'));

Вы можете проверить isNaN(Users_id) перед отправкой. Или просто дайте сбой, и обработайте ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...