@Killimy

Почему все свойства, которые я передаю компоненте, отображаются сразу?

Подскажите, как правильно передать свойства компоненту 'Description' ? У меня есть массив 'name', я использую 'map', чтобы получить из него только 1 имя, но я получаю все имена сразу.

То же самое я делаю с 'Main', но там все отображается корректно.

Пожалуйста, помогите мне исправить ошибку.

Это должно выглядеть так :

1 --> this page is 1. name is kate
2 --> this page is 2. name is jhnon
3 --> this page is 3. name is michael


https://codesandbox.io/s/inspiring-dust-w2cnf?file...
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
duboloms
@duboloms
Люблю есть дубы с кетчупом. Веб-разработчик.
https://codesandbox.io/s/card-routing-forqna-js-re...
В этом sandbox'e я решил все, просто нужно передавать в Description не id (как было у тебя) а целый массив names, и потом в зависимости от id карточки (params.id) подставлять имя из массива по индексу кликнутой карточки: <p>name is {this.props.names[params.id - 1]}</p>
минус 1 я делаю потому что в массиве все считается с нуля, а при нажатии на например первую карточку, мне выдает цифру 1, что было бы не правильно при отображении.

P.S.
Так лучше не делать, как ты сделал в this.state:
this.state = {
  card: [1, 2, 3],
  names: ["kate", "jhon", "michael"]
};

Потому что имя пользователя например kate валяется в одном массиве, а id карточки в другом.
Так не правильно делать, нужно хранить информацию более лучше:
this.state = {
  cards: [
    { card_id: 1, user_name: "kate" },
    // и так далее
  ]
};

или, если например в сервисе (если будут такие проекты) есть аккаунты, то лучше делать так (но с аккаунтами если будет, то без базы данных ни как, да и просто с карточками тоже):
this.state = {
  users: [
    { user_id: 1, user_name: "kate", /* и прочая информация */ }
  ],
  cards: [
    { card_id: 1, creator_id: 1 /* эту карточку создала kate под айдишником 1 */ } 
    // например создатель карточки, и после по этому id ты можешь достать инфу о этом создателе
  ]
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы