React 요약 1: 비동기적으로 업데이트된 setState

2306 단어 es6React
이전 코드:
var Text = React.createClass({
            getInitialState: function() {
                return {name: "react"};
            },
            keyUp: function(e){
                this.setState({name: e.target.value});
                console.log(this.state.name);
            },
            render: function() {
                return (
                    
"a"> , {this.state.name} ! this.keyUp} />
); } }); ReactDOM.render( , document.getElementById('well') );

set State 아래에 console를 추가했습니다. 컨트롤러를 통해 매번 인쇄하는 값은 현재 입력한 값이 아니라 지난번에 입력한 값입니다. 어떻게 된 일입니까?set State에서 이것은 비동기 처리 함수입니다. 동기화된 것이 아닙니다. console는 set State 후에 바로 실행되었습니다. 그래서 이때 상태가 진정으로 변경되지 않았습니다. 그래서 여기서 찾은 상태는 업데이트 전입니다. 업데이트 상태가 필요할 때 작업을 실행하면 어떻게 합니까? set State는 두 번째 인자가 있습니다. 콜백을 받아서 키 Up의 코드를 이렇게 바꾸려고 합니다.
this.setState({name: e.target.value}, function(){
    console.log(this.state.name);
})

이 때 로그는 우리가 원하는 내용만 출력되며, 매번 상태가 업데이트될 때마다 전송된 콜백 함수를 호출합니다.
따라서 다음과 같이 요약한다:react의 setState 특징:**1.비동기 조작 함수입니다.2. 어셈블리가 렌더링되기 전에this.setState가 아직 호출되지 않았습니다.3. State 변환을 대량으로 실행할 때 DOM을 더 빨리 렌더링할 수 있습니다(한 setState보다 상대적으로 빨리 옵니다)**

좋은 웹페이지 즐겨찾기