Jak działa funkcja setState()
? Czy działa tylko render()
?Co się dzieje, gdy wywoływana jest funkcja setState()?
Odpowiedz
setstate() będzie działać funkcje w tej kolejności:
shouldComponentUpdate()
componentWillUpdate()
render()
componentDidUpdate()
Jeśli urządzenie odbiera rekwizytów będzie uruchomić componentWillRecieveProps()
funkcja z powyższym Funkcje.
Jak działa funkcja
setState()
? Czy to tylko uruchomićrender()
nr setstate nie tylko wywołuje funkcję render()
ale po setState
następujące funkcje cyklu życia będą uruchamiane w kolejności w zależności od tego, co shouldComponentUpdate
zwrotów
jeśli shouldComponentUpdate
Zwraca TRUE (co jest prawdą domyślnie).
1. shouldComponentUpdate
2. componentWillUpdate
3. render()
4. componentDidUpdate
jeśli shouldComponentUpdate
zwraca false (jeśli masz niestandardową implementację)
1. shouldComponentUpdate
jeszcze jedno wiedzieć o setstate jest to, że to tylko powoduje ponowne renderowanie dla bieżącego składnika oraz wszystkich jej dzieci (nie uwzględniając implementacji shouldComponentUpdate
dla żadnego z jej potomków), to nie powoduje ponownego renderowania komponentu nadrzędnego, a zatem reconcilation
nie występuje dla składników macierzystych, ale tylko dla siebie i jego dzieci.
DEMO tego, co się stanie, gdy zostanie wywołana setState
.
class App extends React.Component {
state = {
count: 0
}
componentWillReceiveProps(nextProps) {
console.log('componentWillReceiveProps parent');
}
shouldComponentUpdate() {
console.log('shouldComponentUpdate parent');
return true;
}
componentWillUpdate() {
console.log('componentWillUpdate parent');
}
render() {
console.log('render parent')
return (
<div>
<Child count = {this.state.count}/>
<button onClick={() => {
console.log('callingsetState');this.setState((prevState) => ({count: prevState.count + 1}))}} >Increase</button>
</div>
)
}
componentDidUpdate() {
console.log('componentDidUpdate parent')
}
}
class Child extends React.Component {
componentWillMount() {
console.log('componentWillMount child');
}
componentDidMount() {
console.log('componentDidMount child');
}
componentWillReceiveProps(nextProps) {
console.log('componentWillReceiveProps child');
}
shouldComponentUpdate() {
console.log('shouldComponentUpdate child');
return true;
}
componentWillUpdate() {
console.log('componentWillUpdate child');
}
render() {
console.log('child')
return (
<div>
<div>{this.props.count}</div>
</div>
)
}
componentDidUpdate() {
console.log('componentDidUpdate child')
}
}
ReactDOM.render(<App/>, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
Aby dodać wyjaśnienie kwestii, które @poepje dodanej na swoje pytanie
Co setstate robi?
setstate() kolejkuje zmiany stanu komponentu i mówi React że ten komponent i jego dzieci muszą być ponownie renderowane z zaktualizowanego stanu. Jest to podstawowa metoda używana do aktualizowania interfejsu użytkownika w odpowiedzi na procedury obsługi zdarzeń i odpowiedzi serwera.
React ma bardzo dobrą dokumentację na temat tej funkcji here
Można również zobaczyć następującą odpowiedź na dziełach jak setstate:
- 1. Co się dzieje, gdy moja() jest warunkowa?
- 2. Co dokładnie dzieje się, gdy funkcja Go zwraca wiele wartości
- 3. Android - Co się dzieje, gdy urządzenie jest odblokowane?
- 4. co się dzieje, gdy wątek wyrzuca wyjątek?
- 5. Co się dzieje, gdy pamięć podręczna varnish jest pełna?
- 6. Co się dzieje, gdy mongodb jest za mało pamięci?
- 7. Co się dzieje, gdy wywołasz `if key in dyict`
- 8. Co się dzieje, gdy dostawcy typu zmieniają się w F #?
- 9. Ustawianie ostrości w polu tekstowym, gdy funkcja jest wywoływana
- 10. Co się dzieje, gdy daję MyObject obj = new MyObject()
- 11. Co dzieje się w BeginProcessRequest()?
- 12. Co się dzieje, gdy oczekujesz na już ukończone zadanie?
- 13. Co się dzieje, gdy wtyczka docker-maven próbuje zbudować obraz?
- 14. Co dzieje się, gdy połączenia z MongoDB nie są zamknięte?
- 15. Co się dzieje w __libc_start_main?
- 16. co się dzieje, gdy dwukrotnie importuję moduł w pythonie
- 17. Co dokładnie dzieje się, gdy nie można użyć polecenia unbind()?
- 18. Nieoczekiwany przeciążenie wywoływana, gdy funkcja jest wywoływana z zmiennej liczbie argumentów szablonu konkretyzacji
- 19. Co dzieje się z AsyncTask, gdy aktywność uruchamiania jest zatrzymana/zniszczona, gdy nadal działa?
- 20. Dlaczego nie jest wywoływana funkcja textFieldShouldReturn?
- 21. MPMoviePlayerPlaybackDidFinishNotification jest wywoływana, gdy nie
- 22. C funkcja random() setstate nie zachowuje się zgodnie z oczekiwaniami
- 23. Haskell - Implementacja Monoid, co się dzieje, gdy operator nie jest asocjacyjny
- 24. ReactJS setState jest powolny
- 25. Co dzieje się z zewnętrzną funkcją inline?
- 26. Co dzieje się po przechwyceniu pakietu?
- 27. Metoda onPreferenceChange nie jest wywoływana, gdy zmienia się Listpreferences
- 28. Co dzieje się z wyłączoną obsługą przerwań?
- 29. Co się tutaj dzieje? sizeof (short_int_variable + char_variable)
- 30. Co dzieje się z tą tablicą bajtów?
Nic tu przydatny? https://facebook.github.io/react/docs/react-component.html#setstate – mplungjan
Wykonuje wiele funkcji z "react-dom", które faktycznie tworzą aktualizacje diffing i dom (jeśli to konieczne). – marzelin
Widzę tylko odpowiedzi na temat stany cyklu życia, ale brak odpowiedzi na pytanie, do czego służy funkcja setState(). Czy to właśnie miałeś na myśli lub chciałeś wiedzieć o cyklu życia? – poepje