- Created `openspec-ff-change` skill for fast-forward artifact creation. - Introduced `openspec-new-change` skill for structured change creation. - Developed `openspec-onboard` skill for guided onboarding through OpenSpec workflow. - Added `openspec-sync-specs` skill for syncing delta specs to main specs. - Implemented `openspec-verify-change` skill for verifying implementation against change artifacts. - Updated `.gitignore` to exclude OpenSpec generated files. - Added `skills-lock.json` to manage skill dependencies.
30 lines
728 B
Markdown
30 lines
728 B
Markdown
---
|
|
title: Subscribe to Derived State
|
|
impact: MEDIUM
|
|
impactDescription: reduces re-render frequency
|
|
tags: rerender, derived-state, media-query, optimization
|
|
---
|
|
|
|
## Subscribe to Derived State
|
|
|
|
Subscribe to derived boolean state instead of continuous values to reduce re-render frequency.
|
|
|
|
**Incorrect (re-renders on every pixel change):**
|
|
|
|
```tsx
|
|
function Sidebar() {
|
|
const width = useWindowWidth() // updates continuously
|
|
const isMobile = width < 768
|
|
return <nav className={isMobile ? 'mobile' : 'desktop'} />
|
|
}
|
|
```
|
|
|
|
**Correct (re-renders only when boolean changes):**
|
|
|
|
```tsx
|
|
function Sidebar() {
|
|
const isMobile = useMediaQuery('(max-width: 767px)')
|
|
return <nav className={isMobile ? 'mobile' : 'desktop'} />
|
|
}
|
|
```
|