Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update state-as-a-snapshot.md #7641

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

siddtheone
Copy link

Fix misleading explanation about props and event handlers in rendering

Description

This PR updates the explanation of how React handles props, event handlers, and local variables during rendering. The original text stated:

"Its props, event handlers, and local variables were all calculated using its state at the time of the render."

However, this is misleading because:

  1. Props are not calculated from a component's state. They are passed from the parent component and only reflect the state of the parent at the time of its last render.
  2. Event handlers do not get "calculated" per render but rather capture the state from the moment they were created. Unless wrapped in useCallback, they will be re-created on every render but will still close over the state at the time of their creation.

Updated text:

Local variables and event handlers capture the state from the moment the component rendered. Props are received from the parent and reflect the parent's state at the time of the parent’s last render.

Why this change?

The new phrasing clarifies that:

  • Props come from the parent and are not derived from state.
  • Event handlers reference the state of the render in which they were created.
  • Local variables are tied to the specific render snapshot.

This should prevent confusion, especially for developers who might misinterpret it as meaning that props are calculated from state.

## Fix misleading explanation about props and event handlers in rendering

### Description  
This PR updates the explanation of how React handles props, event handlers, and local variables during rendering. The original text stated:  

> *"Its props, event handlers, and local variables were all calculated **using its state at the time of the render.**"*

However, this is misleading because:  

1. **Props** are **not** calculated from a component's state. They are passed from the **parent component** and only reflect the state of the **parent at the time of its last render**.  
2. **Event handlers** do not get "calculated" per render but rather **capture the state from the moment they were created**. Unless wrapped in [`useCallback`](https://react.dev/reference/react/useCallback), they will be re-created on every render but will still close over the state at the time of their creation.  

### **Updated text:**  
> Local variables and event handlers capture the state **from the moment the component rendered**. Props are received from the parent and reflect the parent's state **at the time of the parent’s last render**.  

### **Why this change?**  
The new phrasing clarifies that:  
- **Props come from the parent and are not derived from state.**  
- **Event handlers reference the state of the render in which they were created.**  
- **Local variables are tied to the specific render snapshot.**  

This should prevent confusion, especially for developers who might misinterpret it as meaning that props are calculated from state.
Copy link

vercel bot commented Feb 21, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
19-react-dev ✅ Ready (Inspect) Visit Preview 💬 Add feedback Feb 21, 2025 0:29am
react-dev ✅ Ready (Inspect) Visit Preview 💬 Add feedback Feb 21, 2025 0:29am

Copy link

Size changes

📦 Next.js Bundle Analysis for react-dev

This analysis was generated by the Next.js Bundle Analysis action. 🤖

This PR introduced no changes to the JavaScript bundle! 🙌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants