React에서 일괄 업데이트
일괄 업데이트란 무엇입니까?
React에서 여러 변경 상태를 그룹화할 때 일괄 처리는 성능 향상을 위해 단일 업데이트로 그룹화됩니다.
상태를 변경할 때마다 React는 페이지의 구성 요소를 렌더링합니다.
주어진 예제에서 상태를 3번 변경하지만 렌더링은 한 번만 발생합니다.
import React from "react";
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
name: '',
likes: '',
product: ''
};
}
handleClick = () => {
this.setState({
name:"john",
})
this.setState({
likes:"cricket",
})
this.setState({
product:"bat"
})
}
render() {
console.log("rendering");
return (
<div className="App">
<div>
<button onClick={this.handleClick}>Next</button>
</div>
</div>
);
}
}
export default App;
여기서 일어나는 일은 버튼을 누를 때 this.setSate를 사용하여 상태가 변경되고 반응이 이러한 모든 변경 사항을 일괄 처리하고 한 번에 렌더링하는 것입니다.
이전 버전의 React에서는 일괄 처리가 이벤트 핸들러에 대해서만 수행되었습니다.
React v18은 모든 위치에서 수행된 상태 업데이트가 기본적으로 일괄 처리되도록 합니다. 이렇게 하면 네이티브 이벤트 핸들러, 비동기 작업, 시간 초과 및 간격을 포함한 상태 업데이트가 일괄 처리됩니다.
이 예에서 React v17의 경우 React는 구성 요소의 상태를 변경하므로
console.log(this.state)
React 17을 볼 때 { counter1: 1, counter2: 0 }
상태가 첫 번째 상태 변경에 대해 렌더링되고 렌더링되었기 때문입니다.import React from "react";
class App extends React.Component {
state = {
counter1: 0,
counter2: 0
}
handleClick = () => {
setTimeout(() => {
this.setState(({ counter1 }) => ({ counter1: counter1 + 1 }));
console.log(this.state);
//React 17 : { counter1: 1, counter2: 0 }
//React 18 with createRoot : { counter1: 0, counter2: 0 }
this.setState(({ counter2 }) => ({ counter2: counter2 + 1 }));
});
};
render() {
console.log('Rerendered');
console.log(this.state);
// {counter1: 1, counter2: 1}
return (
<div className='App'>
<button onClick={this.handleClick}>Click me</button>
</div>
)
}
}
export default App;
반응 v18
참조
Reference
이 문제에 관하여(React에서 일괄 업데이트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/abhinav707/batch-update-in-react-49l0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)