React props destructuring возвращает undefined

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

 const { navigation, book } = this.props; 
 {console.info('book: '+JSON.stringify(book))}

Он консолей объект с объектом volumeInfo внутри него, когда я хочу получить к нему доступ следующим образом:

 const { navigation, book: { volumeInfo: { title, description }} } = this.props; 
 {console.info(title, description)}

Тогда это не так, его props2.volumeInfo.title имеет значение null Пробовал с заголовком && console.info (заголовок), но ничего ...

Вот журнал консоли для первого случая:

 book: {"kind":"books#volume","id":"__JIDwAAQBAJ","etag":"6y5RWEIbrcY","selfLink":"https://www.googleapis.com/books/v1/volumes/__JIDwAAQBAJ","volumeInfo":{"title":"Make Me","authors":["Kaye Blue"],"publisher":"Kaye Blue","description":"<p><b><i>They might make a great team … if they don’t kill each other first.</i></b></p><p>Cree Manning loves everything about being an attorney…except her colleague, Aaron. He may be an actual prince, but he’s also used to coasting through life on his good looks and status. Aaron's hot enough to melt ice, but his arrogance and more than questionable work ethic drive her up a wall.</p><p>His Royal Highness, Aaron Sarda, is third in line to the throne…which means his role in the Kingdom of Medina is mostly ornamental. He hates feeling useless, and working with Cree has taught him that he hates being looked down on even more. Sure, she’s gorgeous, but she’s also rigid, overbearing, and utterly immune to his charm.</

Не могли бы вы создать Минимальный, полный и проверяемый пример, например, в CodeSandbox? Трудно сказать, что не так, исходя из информации, содержащейся в вашем вопросе.

Tholle 30.07.2018 06:42

что такое this.prop

Aravind S 30.07.2018 07:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
2 616
2

Ответы 2

Попробуйте с этим

 const { navigation } = this.props; 
 const { title, description } = this.props.book.volumeInfo;
 {console.info(title, description)}

вы можете console.info (this.state.book.volumeInfo), пожалуйста, чтобы я лучше понял, что у вас есть

Daniel Daza 30.07.2018 07:06

В сообщении есть журнал, я не могу зарегистрировать this.props.book.volumeInfo, если я его деструктурирую.

merko 30.07.2018 07:12

Я прошу вас запустить этот '{console.info (this.props.book.volumeInfo)}'

Daniel Daza 30.07.2018 07:15

Работает это так: {this.props.book && console.info(JSON.stringify(this.props.book.volumeInfo))}

merko 30.07.2018 07:20

В деструктурирующее задание в левой части присвоения он определяет, какие значения распаковывать из переменной источника.

Итак, в этом сценарии присваивания это объявление не переменной для volumeInfo.

Вот почему ошибка синтаксиса. Uncaught ReferenceError: volumeInfo не определен.

Если вы хотите получить доступ к title через volumeInfo, сделайте так.

var { book:  volumeInfo } = props; 

или же

var { book:  {volumeInfo }} = props;

В твоем случае,

var { book: { volumeInfo: { title, description }} } = props;

title & description будет правильно печатать значение напрямую, но не через volumeInfo

Другие вопросы по теме