React setState
는 호출 될 때마다 모든 구성 요소 및 하위 구성 요소를 다시 렌더링합니까 ?
그렇다면 왜 그렇습니까? React는 상태가 변경 될 때 React가 필요한만큼만 렌더링한다는 생각을했습니다.
다음 간단한 예제에서 onClick 핸들러는 항상 state
같은 값으로 설정하므로 후속 클릭에서 상태가 변경되지 않더라도 텍스트를 클릭하면 두 클래스가 다시 렌더링됩니다 .
this.setState({'test':'me'});
state
데이터가 변경된 경우에만 렌더링이 발생할 것으로 예상했습니다 .
다음 은 JS Fiddle 및 포함 된 스 니펫 인 예제 코드입니다.
var TimeInChild = React.createClass({
render: function() {
var t = new Date().getTime();
return (
<p>Time in child:{t}</p>
);
}
});
var Main = React.createClass({
onTest: function() {
this.setState({'test':'me'});
},
render: function() {
var currentTime = new Date().getTime();
return (
<div onClick={this.onTest}>
<p>Time in main:{currentTime}</p>
<p>Click me to update time</p>
<TimeInChild/>
</div>
);
}
});
ReactDOM.render(<Main/>, document.body);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react-dom.min.js"></script>
[1]: http://jsfiddle.net/fp2tncmb/2/
setState()
더미 데이터로 호출 해도 요소가 다르게 렌더링되므로 예라고 대답하고 싶습니다. 당연히 무언가가 변경되었을 때 객체를 다시 렌더링하려고 시도해야합니다. 그렇지 않으면 데모가 의도 된 동작이라고 가정하면 작동하지 않기 때문입니다!
shouldComponentUpdate
메소드 를 작성 해야하는 것처럼 보였으 므로 간단한 버전이 이미 React 자체에 포함되어 있다고 가정했습니다. 반응에 포함 된 기본 버전과 같은 소리는 단순히 반환 true
합니다. 구성 요소는 매번 다시 렌더링됩니다.