Home > Article > Web Front-end > Does Every `setState` Call Trigger a React Render?
ReactJS - Does Render Trigger with Every "setState" Call?
React maintains a distinction between its virtual DOM and the native DOM. When a component receives a state update, its render method is invoked. This generates a new virtual DOM representation of the component. However, it's important to note that React doesn't immediately update the native DOM.
Default Behavior: Re-render on Every State Update
By default, React assumes that any state change requires a UI re-render. This ensures that the user interface is always kept in sync with the latest state.
Virtual DOM Rendering vs. Native DOM Rendering
When render executes, it generates a new virtual DOM. This phase does not affect the native DOM. Subsequently, React compares the new virtual DOM with the previous one and only updates the actual elements in the browser that have changed. This optimization prevents unnecessary re-rendering and minimizes browser reflows and repaints.
Can I Optimize Re-rendering?
You can implement the shouldComponentUpdate lifecycle method to fine-tune when a component re-renders. It takes two arguments:
You can use shouldComponentUpdate to check if the upcoming props and state are significantly different from the current ones. If they are not, you can return false to prevent re-rendering and improve performance.
Example
In the provided example, both parent and child components re-render on each click, even though the state in the parent component remains unchanged. This is because setState always trigger a virtual DOM re-render, and React assumes that the UI must be updated. To prevent unnecessary re-rendering in such scenarios, you can implement shouldComponentUpdate to check if the state has actually changed.
The above is the detailed content of Does Every `setState` Call Trigger a React Render?. For more information, please follow other related articles on the PHP Chinese website!