The react-hooks/set-state-in-effect rule fails to flag a violation when a component's destructured prop has a default value that is a NewExpression (new Foo()).
react version: 18.3.1
eslint-plugin-react-hooks: 7.0.1
Steps To Reproduce
// ❌ Should flag — but doesn't
function MyComponent({ value = new Number() }) {
const [x, setX] = useState(false)
useEffect(() => {
setX(true)
}, [x])
return null
}
// ✅ Correctly flags — literal default
function MyComponent({ value = Number() }) {
const [x, setX] = useState(false)
useEffect(() => {
setX(true)
}, [x])
return null
}