Как правильно добавить массив в сращивание в реаги - PullRequest
0 голосов
/ 19 ноября 2018

Вопрос новичка.

У меня есть массив, который мне нужно добавить, и я использую ломтик, чтобы сделать это. Я использую Гэтсби / реагирую. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда моя страница / компонент перерисовывает объект, который я добавляю в мой массив, он снова добавляется

Вот мой код

class IndexPage extends PureComponent {

  render() {
    const data = this.props.data;

    const hostels = data.featuredHostel.edges;

    const hopimage = data.hop.childImageSharp.fluid;
    hostels.splice(8, 0, {
      node: {
        featuredImage: {
          alt: 'Bedhopper Image',
          fluid: hopimage
        },
        id: 'bedhopper',
        slug: '/deals/bed-hopper',
        title: 'For travel adicts who want to stay everywhere'
      }
    });

    return (....

Я застрял на этом некоторое время. Любая помощь приветствуется

1 Ответ

0 голосов
/ 19 ноября 2018

Вы должны сделать любой расчет на constructor или componentDidMount.

class IndexPage extends PureComponent {
  constructor(props) {
    super(props);
    this.state = {
      hostels: props.data.featuredHostel.edges.concat(...)
    }
  }

  componentDidMount() {

  }

  render() {
    const { hostels } = this.state;

    return (
      ...
    )

Возможно, ваш случай тоже может сработать (я не видел весь код).Я полагаю, вы используете индекс массива в качестве ключа для визуализации

hostels.map((hostel, hostelIndex) => (<SomeComponent key={hostelIndex} />))

Вы можете изменить ключ на hostel.id, например, для более уникального блока.

...