React hasOwnProperty не находит свойство

#javascript #reactjs #hasownproperty

#javascript #reactjs #hasownproperty

Вопрос:

У меня проблема с поиском свойства, которое, как я знаю, находится внутри ответа JSON. У меня есть это:

 {
  "global": {
    "loading": false,
    "error": false,
    "currentUser": false,
    "userData": {
      "repositories": false
    }
  },
  "language": {
    "locale": "en"
  },
  "login": {
    "login": {

    }
  },
  "router": {
    "location": {
      "pathname": "/login",
      "search": "",
      "hash": ""
    },
    "action": "POP"
  }
}
  

При рендеринге у меня есть это, чтобы проверить, существует ли свойство

  render() {
let isSuccess;
const respuesta = this.props.response;

console.info(respuesta.has('login'));

if (respuesta.login.has('response')) {
  isSuccess = this.props.response.login.response.success;
  if (isSuccess) {
    localStorage.removeItem('token');
    localStorage.setItem('token', this.props.response.login.response.token);
  }
}
  

это console.info (respuesta.has(‘login’)); возвращает мне true, но в следующем if выдает ошибку: «TypeError: не удается прочитать свойство ‘has’ неопределенного типа»

Я следовал руководству по:

https://medium.freecodecamp.org/login-using-react-redux-redux-saga-86b26c8180e

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

1. что this.props.response.hasOwnProperty('login') возвращает? возможно, вам нужно показать, с this.props.response чем связан потерянный объект, который вы показываете в вопросе в первую очередь… its inside the array нет массива — значит, вы определенно делаете что-то неправильно ™

2. я проверил Object.prototype.hasOwnProperty.call(this.props.response, "login")) с помощью жестко запрограммированного ответа var, и он возвращается true похоже, вы неправильно получаете реквизиты ответа или структура отличается

3. или, может быть, login наследуется?

4. Отлично работает во фрагменте

5. and as I see in the console.info — хммм, может ли это быть проблемой асинхронности… Интересно, ложь в журнале консоли привела к появлению другой жертвы