W komponentu ojca <Father />
można utworzyć początkowy stan, w którym można śledzić każde dziecko (przy użyciu i id na przykład), przypisując wartość logiczną, co oznacza, tynku lub nie:
getInitialState() {
let state = {};
React.Children.forEach(this.props.children, (child, index) => {
state[index] = false;
});
return state;
}
Potem, kiedy składnik jest zamontowany, zaczynasz swoje czasomierze, aby zmienić stan:
componentDidMount() {
this.timeouts = React.Children.forEach(this.props.children, (child, index) => {
return setTimeout(() => {
this.setState({ index: true; });
}, child.props.delay);
});
}
Podczas renderowania swoje dzieci, to zrobić poprzez ich odtworzenie, przypisując jako rekwizyt stanu dla dziecka dopasowania, które mówi, że jeśli składnik musi być wydane lub nie.
let children = React.Children.map(this.props.children, (child, index) => {
return React.cloneElement(child, {doRender: this.state[index]});
});
Więc w składniku
render() {
if (!this.props.render) return null;
// Render method here
}
Kiedy oczekiwanie jest zwolniony <Child />
stan ulega zmianie, a składnik ojciec rerendered. Rekwizyty dla dzieci są aktualizowane, a jeśli doRender
jest true
, będą się renderować.
Dziękuję bardzo za odpowiedź! Działa dokładnie tak, jak potrzebowałem. – michalvalasek
skąd masz tę nieruchomość z show? to nie jest część React? – PositiveGuy
'show' odnosi się do utworzonej przeze mnie funkcji, która ustawia stan' hidden' na pusty ciąg znaków. To trzecia funkcja w klasie "Dziecko". –