#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
— хммм, может ли это быть проблемой асинхронности… Интересно, ложь в журнале консоли привела к появлению другой жертвы