Реагировать Передача реквизита другому зацикленному Компоненту

Я пытаюсь передать реквизиты зацикленного компонента (используя array.map ()) другому компоненту, как показано ниже:

{this.posts.map((item, index) => {
    return (
         <Post
          item = {item} 
          key = {index}
         />
    );
  })
}

Таким образом, рендерится много родственных компонентов Post, но каждый с разными элементами (данными) и ключами. Теперь я хочу отправить реквизиты (чтобы разделить состояние между двумя компонентами) одного конкретного компонента Post другому конкретному компоненту-родственнику Post. То есть я хочу выбрать конкретный компонент сообщения (может быть, со значением ключа? И отправить состояние только другому конкретному компоненту сообщения). Как мне этого добиться?

Спасибо.

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

Ответы 1

Ответ принят как подходящий

Я бы порекомендовал привязать функцию, которая обновляла бы this.posts. Таким образом, все ваши компоненты будут обновляться без необходимости принимать потенциально запутанные состояния.

Идея состоит в том, что функция updatePosts примет дочерний компонент целевого индекса (ключа) для обновления и передаст ему новое состояние. В приведенном ниже коде, если вы запустили updatePosts ({firstName: 'Harry', lastName: 'Styles'}, 1), то состояние изменится с первого элемента «Foo Bar» на «Harry Styles», а дочерние компоненты будут перерисованы.

import React from 'react';

class PostMaster extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      //the array you use to render child components will be managed in a state like this
      data: [
        {
          firstName: 'Foo',
          lastName: 'Bar'
        },
        {
          firstName: 'James',
          lastName: 'Bond'
        },
        {
          firstName: 'Harry',
          lastName: 'Potter'
        }
      ]
    };
    this.updatePosts = this.updatePosts.bind(this);
  };

  /**
   * stateData (object)     the data you want to go in a given index
   * index (int)            the child component you would like to update
  /
  updatePosts(stateData, index) {
    let newData = this.state.data;
    newData[index] = stateData;
    this.setState({data: newData});
    //you can always push instead of reassigning
  };

  render() {
    return(
      <div>
        {this.state.data((item, index) => {
            return (
                <Post
                  item = {item} 
                  key = {index}
                  update = {this.updatePosts}
                />
            );
          })}
      </div>
    )
  }
}

Спасибо за ответ. Не уверен, что понял. Итак, должен ли я объявить функцию updateposts в компоненте сообщения, из которого я хочу отправить данные?

Eric Ahn 27.10.2018 02:49

Пост отредактировал, надеюсь поможет. Но да, вы бы объявили функцию для управления своим состоянием React. Вы отправите данные, но вам также необходимо предоставить им индекс, поскольку вы хотите иметь возможность указать, какой дочерний компонент обновляется.

pinkwaffles 27.10.2018 05:14

Спасибо! Я постараюсь вернуться к тебе

Eric Ahn 27.10.2018 18:47

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