Как тут происходит проброс props?

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

Profile.jsx
const Profile = () => {

/*  Информация для сообщений - текст сообщений и лайки  */
let posts = [
{id: 1, message: "Пост 1", likesCount:1},
{id: 2, message: "Пост 2", likesCount:2},
]

return (
<div>
<MyPosts posts={posts} />
</div>
);
}

В файле выше вроде всё ясно. Мы передали объект-массив в качестве props в компоненту MyPosts.
Фактически вызвали функцию MyPosts с аргументом - массивом.

MyPosts.jsx
const MyPosts = (props) =>
{

let postsElements = props.posts.map( p => <Post message={p.message} likesCount={p.likesCount} /> )

return (

<div className={css.MyPosts}>
<div className={css.posts}>
 /*  Вывод сообщений */
{postsElements}
</div>
</div>
);
}


А вот тут не всё понятно.
Компонента принимает переданный массив (props). То есть данные из Profile пришли.
Далее что то передается в переменную postsElements . Эта строка, её логика не до конца понятна.
Да, я вижу что из props идет обращение к объекту posts (переданным данным) и дальше они "мепятся"?
А внутри этого стрелочная функция возвращающая результат вызова компоненты Post с переданными параметрами.
В общем не до конца понятно что точно там происходит.

Ну и ниже незнакомая мне конструкция {postsElements}.

PS
Я предполагал, что когда в props придет массив, его в цикле передадут в компоненту Post.
Т.е. вызовут её несколько раз, для каждой записи массива. Но тут что то иное...
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
@tantumus21
postsElements становится массивом компонентов <Post>. В данном случае .map превращает каждый набор данных из массива props.posts в компонент с этими данными. При этом сам массив props.post никак не изменяется. Почитайте про .map

Изменять props - не очень хорошая идея
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы