Я пытаюсь передать реквизиты зацикленного компонента (используя array.map ()) другому компоненту, как показано ниже:
{this.posts.map((item, index) => {
return (
<Post
item = {item}
key = {index}
/>
);
})
}
Таким образом, рендерится много родственных компонентов Post, но каждый с разными элементами (данными) и ключами. Теперь я хочу отправить реквизиты (чтобы разделить состояние между двумя компонентами) одного конкретного компонента Post другому конкретному компоненту-родственнику Post. То есть я хочу выбрать конкретный компонент сообщения (может быть, со значением ключа? И отправить состояние только другому конкретному компоненту сообщения). Как мне этого добиться?
Спасибо.
Я бы порекомендовал привязать функцию, которая обновляла бы 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>
)
}
}
Пост отредактировал, надеюсь поможет. Но да, вы бы объявили функцию для управления своим состоянием React. Вы отправите данные, но вам также необходимо предоставить им индекс, поскольку вы хотите иметь возможность указать, какой дочерний компонент обновляется.
Спасибо! Я постараюсь вернуться к тебе
Спасибо за ответ. Не уверен, что понял. Итак, должен ли я объявить функцию updateposts в компоненте сообщения, из которого я хочу отправить данные?