Многоуровневый реквизит в React

Я недавно начал учиться реагировать. Я не могу этого понять:

this.props.message.text

Я знаю, что message - это объект с парой ключ-значение в нем, ключом является text. Но моя проблема в том, что мы хотим передать опору компоненту:

<Component message = {message}>

У меня вопрос: зачем писать message = {message}?

Почему бы нам не написать message = {message.text} вместо этого, чтобы мы знали, что нам нужен text?

Как он узнает, что нам нужен text в объекте message?

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

Dave Newton 30.05.2018 13:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
449
2

Ответы 2

Это зависит от того, что делает Component. Допустим, у вас есть больше свойств в объекте сообщения, например:

{
  text: 'this is my message',
  author: 'odiwxe',
  sentAt: '2018-05-30T12:30:00'
}

Затем вашему Component может понадобиться вся эта информация, чтобы отобразить ее, чтобы вы могли передать ее, как вы это сделали, например:

<Component message = {message}>

В противном случае, если ваш Component заботится только о тексте сообщения, вы потенциально можете изменить его на что-то вроде этого:

<Component messageText = {message.text}>

Тебе решать!

Спасибо. Для контекста это ссылка: meteor.com/tutorials/react/components Моя проблема заключается в функции renderTasks в файле App.js. Он использовал task._id для идентификатора, но для текста задачи он написал только task.

odiwxe 30.05.2018 13:48

Да, вы правы - на самом деле нет необходимости передавать всю задачу в случае учебника, поскольку он использует только свойство text. Однако передача всего объекта task позволяет легко изменять компонент Task, если к объекту добавляются дополнительные свойства, без необходимости изменять родительский элемент для передачи новых свойств.

cdimitroulas 30.05.2018 13:59

На самом деле это не так. Когда нам нужен текст сообщения, мы должны получить доступ к данным, используя реквизиты, переданные дочернему компоненту следующим образом:

{this.props.message.text}

Итак, когда любому дочернему компоненту требуются данные, которые отправляются его родителем, вам необходимо указать имя объекта, в котором вам требуются данные в дочернем элементе. Например:

<Parent Component {

//Some code//


<ChildComponent propsName = {propsData}
}

Тогда эти данные будут доступны в дочернем компоненте в таком виде:

<ChildComponent

{this.props.propsName}

}

Итак, это способ передачи данных от родителя к потомку, и для этого вам нужно использовать реквизиты.

//Update

Он использовал задачу для задачи, но task.id для ключа, потому что в этом случае им просто нужен ключ, а объект задачи используется в компоненте для некоторых других функций, таких как печать текста, написанного в том, что не может быть получено из задачи.id индивидуально.

По моему мнению, объект задачи примерно такой:

task{
"text": "value"
}

Спасибо. Пожалуйста, прочтите мой комментарий к ответу Христоса Димитруласа на этот вопрос. Вы можете это проверить и помочь мне?

odiwxe 30.05.2018 13:54

Я думаю, это то, что вы ищете.

Aniruddh Agarwal 30.05.2018 14:01

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