В /home/:id
У меня есть <LogButtons/>
, когда его щелкают logOn()
, так что переменная logsignPopUp
становится компонентом <logForm/>
.
На той же странице у меня есть <IframeYoutubeComponent/>
, я хочу, чтобы он не отображался, когда на экране появляется <logForm/>
, поэтому видео не перезагружается .
home.js:
export default class Home extends Component {
constructor(props) {
super(props);
this.state = { logsign: "" };
this.logOn = this.logOn.bind(this);
this.signOn = this.signOn.bind(this);
}
logOn() {
this.setState({ logsign: "log" });
}
render() {
let logsignPopUp = this.props.logsign === "log" ? <LogForm/> : this.state.logsign;
let homePage =
<div>
{logsignPopUp}
<div>
<LogButtons logOn={this.logOn}/>
</div>
<div>
<IframeYoutubeComponent paramsId={this.props.match.params.paramsId}/>
</div>
</div>;
return (
<div>
<Route exact path="/home/:id" component={() => <div>{homePage}</div> } />
</div>
);
}
}
iframeYoutubeComponent.js:
export class IframYoutubeComponent extends Component {
render() {
//this.props.youtube come from Redux state
let src = this.props.youtube.find(el => el.youtubeId === this.props.paramsId);
return (
<iframe src={"https://www.youtube.com/embed/" + src}></iframe>
);
}
}
Я пытался вернуть false в shouldComponentUpdate (), но он даже не вызывался:
shouldComponentUpdate() {
console.log("test");
return false;
}
Я пытался использовать PureComponent для <IframeYoutubeComponent/>
, но видео все равно перезагружалось, когда всплывало <logForm/>
.
Я пытался добавить ключ к своим компонентам, а также пытался вставить this.state.logsign
в Redux
, но ничего не получилось.
Я начал реагировать с 2 месяцев, поэтому я мог упустить что-то очевидное, но я не могу выяснить, что ... Есть идеи?