[英]How should I go about changing the state of siblings when a child is clicked in React?
我是 React 的新手,我剛剛遇到了一個問題,我需要 select 數組中的單個組件,但是當我 select 那個子組件時,我希望它改變兄弟組件的狀態/樣式。
所以假設我在一個數組中有 3 個子組件。 我怎樣才能 select 一個項目並將其設置為看起來被選中,然后取消選擇/取消所有其他兄弟姐妹的樣式?
我在這里有一個示例項目:https://codesandbox.io/s/summer-river-h20cx?file=/src/Parent.js我希望一次只有一個子項為綠色,選中時。
謝謝!
在我看來,從父組件控制selected
道具並將onClick
傳遞給子組件並將子組件用作展示組件會更有效。
class Parent extends React.Component {
constructor() {
super();
this.state = {
selectedId: 1,
childArray: [
{
id: 1,
Name: "Child 1"
},
{
id: 2,
Name: "Child 2"
},
{
id: 3,
Name: "Child 3"
}
]
};
this.handleClickChild = this.handleClickChild.bind(this);
}
handleClickChild(id) {
this.setState({ selectedId: id });
}
render() {
var childObjects = this.state.childArray.map(item => (
<Child
text={item.Name}
selected={item.id === this.state.selectedId}
onClick={() => this.handleClickChild(item.id)}
/>
));
return <div className="parent">{childObjects}</div>;
}
}
你可以看到我根據你的https://codesandbox.io/s/crazy-haze-vy75f?file=/src/Parent.js制作的這個代碼框
嘗試將 state 向上提升:將 state 移動到父組件並讓它控制它,而子組件是無狀態的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.