Was Sie wollen, kann getan werden. Aber es ist nicht die beste Vorgehensweise. Grundsätzlich müssen Sie die Verfügbarkeit Ihrer Komponente von der übergeordneten Komponente umschalten. Wie unten gezeigt, verfügt die übergeordnete Komponente über eine state-Eigenschaft, um die Verfügbarkeit der untergeordneten Komponente zu ermitteln.
class Parent extends Component {
constructor(props) {
super(props);
this.state ={
showChild : true
}
}
componentDidMount() {
console.log('Parent Mounted');
}
reloadChild =() => {
this.setState({
showChild : false
})
setTimeout(() => {
this.setState({
showChild : true
})
},100);
console.log("Reload Child Invoked")
}
render() {
return (
<div >
{this.state.showChild?
<Child reloadChild={this.reloadChild}/> : null
}
</div>
);
}
}
Die Kinderkomponente würde wie folgt aussehen
class Child extends Component {
constructor(props) {
super(props);
}
componentDidMount(){
console.log('Child component Mounted');
}
componentWillUnmount(){
console.log('Child Component Unmounted');
}
onButtonClick =() => {
console.log("Button Clicked")
this.props.reloadChild();
}
render() {
return (
<button onClick={this.onButtonClick}>
Click Me
</button>
);
}
}
Wenn Sie auf die Schaltfläche der Komponente Kind klicken, wird der Aufruf der Methode in übergeordnete Komponente, die die Verfügbarkeit der untergeordneten Komponente umschaltet. Beachten Sie, dass ich setInterval in der Methode reloadChild() verwendet habe, um die Verfügbarkeit zu ändern. Wie ich bereits sagte, ist dies nicht die beste Vorgehensweise. Nur ein Workaround.
Die einzige Möglichkeit besteht darin, die Komponente zu deaktivieren und anschließend erneut zu rendern. Sehen Sie sich dies an: https://tylermcginnis.com/an-introduction-to-life-cycle-events-in-react-js/ –
Ich glaube nicht, dass es eine gute Idee ist, eine Komponente zu deaktivieren. Ich würde Sie lieber bitten, die 'componentWillReceiveProps' Lifecycle-Methode zu verwenden, um alles, was Sie tun, in' componetDidMount' zu tun. –
Könnten Sie bitte Ihr Wurzelproblem posten? Ich denke mehr Leute können dir helfen, denn was du machen willst, sollte nicht gemacht werden. Ich denke, wir können dir besser helfen, wenn du dein Grundproblem postest. – Daniel