Skip to content

React & TypeScript Support For ref With as Prop #3483

Open
@yishayhaz

Description

@yishayhaz

Current behavior

Currently, we are assigning Ref to every React component in the project that uses the as prop. This approach leads to a messy implementation, as noted by @RobinMalfait, it's a hack.

Screenshot 2024-09-19 at 20 46 19

Solution

I have a solution for this TypeScript issue. By utilizing the global HTMLElementTagNameMap, we can accurately type the refs. Although there are a few additional steps to ensure the solution is clean and reusable, the general approach will look like this:

Screenshot 2024-09-19 at 20 45 01 Screenshot 2024-09-19 at 20 45 11

*The screenshots are from the actual headlessui/react package, where I implemented a quick local solution.
*This approach also allows for passing in custom components, while including their respective props.

Conclusion

If there are no specific reasons for using a general type for all refs, I would like to implement this solution to improve this library.

I welcome any questions, comments, or suggestions!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions