我的第一個反應項目的第一個問題。reactjs重置組件的道具將接收作業
我想弄清楚如何在特定的onClick鏈接上最好地實現組件,以便能夠重新觸發此效應並且不會受到頁面上其他鏈接的影響。前兩個問題正在工作,但我似乎沒有其他鏈接不影響組件。
我有一個DisplayLightbox組件我的網頁接受一對夫婦值
<div>
<DisplayLightbox
showLightbox = {this.state.showLightbox}
lightboxValue = {this.state.travelCity}
/>
</div>
我想觸發燈箱被調用設置狀態(和發送道具)的功能鏈接。這部分似乎工作正常。
onClick={() => this.showLightbox(el.field_city)}
showLightbox(travelCity){
this.setState({
showLightbox: true,
travelCity: travelCity,
});
}
以我DisplayLightbox部件,所述componentWillReceiveProps確實設置狀態爲真,這增加了磅活性類在div,其中,從所述的CSS,顯示在燈箱的div。這看起來很好。
class DisplayLightbox extends React.Component {
constructor(props) {
super(props);
this.state = {
showLightbox: false,
};
}
componentWillReceiveProps(nextProps) {
if (nextProps.showLightbox !== this.state.showLightbox) {
this.setState({ showLightbox: nextProps.showLightbox });
}
}
closeLightbox() {
this.setState({
showLightbox: false,
});
}
render() {
var lbActive = (this.state.showLightbox === true) ? "lb-active" : ""
return <div className={"lightbox " + lbActive }>
<div className={"lightbox-close " + lbActive } onClick={() =>
this.closeLightbox()}>CLOSE</div>
Copy in lightbox
</div>;
}
}
尋找到它,我看到的是,由於道具不是由組件控制和只讀,一旦它被設置爲True,並且我通過設置showLighbox的狀態恢復到假,nextProps關閉股利。 showLightbox保持真實。所以,如果我關閉它(closeLightbox)並單擊我的頁面上的其他onClick,它仍會查看我的組件,看到nextProps.showLightbox仍設置爲TRUE並打開Lightbox。
我只想讓燈箱打開,如果該特定鏈接是被點擊的人。看起來每個其他鏈接都將showLightbox的狀態設置爲false,所以我猜測我沒有正確地看待它。
感謝
非常感謝您的快速回復。我已經添加了一個按鈕div來切換showLightbox狀態,並且正如您所說,我可以從子項中移除componentWillReceiveProps。似乎工作。 – user1932694