Skip to content

Bug: react-hooks/set-state-in-effect fails to flag violation if prop has a NewExpression default value #36101

@Romej

Description

@Romej

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
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Status: UnconfirmedA potential issue that we haven't yet confirmed as a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions