Summary
ESLint flags 2 instances of setState called directly inside useEffect in App.tsx, causing cascading renders:
1. Draft restoration (line ~67)
useEffect(() => {
const savedTitle = localStorage.getItem('samizdat_draft_title')
if (savedTitle) setTitle(savedTitle) // ← cascading render
// ...
}, [])
2. Publish result handling (line ~154)
useEffect(() => {
if (nostr.publishResult?.success) {
setShowPublishModal(false) // ← cascading render
}
}, [nostr.publishResult])
Fix Approach
- Draft restoration: Use
useState initializer functions (useState(() => localStorage.getItem(...))) instead of effect
- Publish result: Use
useCallback or event-driven pattern instead of watching state in an effect
Acceptance Criteria
Summary
ESLint flags 2 instances of
setStatecalled directly insideuseEffectinApp.tsx, causing cascading renders:1. Draft restoration (line ~67)
2. Publish result handling (line ~154)
Fix Approach
useStateinitializer functions (useState(() => localStorage.getItem(...))) instead of effectuseCallbackor event-driven pattern instead of watching state in an effectAcceptance Criteria
react-hooks/set-state-in-effectESLint errors