ui: Error in Select Component
i am getting an Error by using the Select component:
Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
Check the render method of SlotClone.
at TbChevronDown
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-slot@1.0.1_react@18.2.0/node_modules/@radix-ui/react-slot/dist/index.module.js:47:23)
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-slot@1.0.1_react@18.2.0/node_modules/@radix-ui/react-slot/dist/index.module.js:21:23)
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-primitive@1.0.2_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-primitive/dist/index.module.js:46:26)
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-select@1.2.1_@types+react@18.2.6_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-select/dist/index.module.js:322:28)
at button
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-primitive@1.0.2_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-primitive/dist/index.module.js:46:26)
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-slot@1.0.1_react@18.2.0/node_modules/@radix-ui/react-slot/dist/index.module.js:47:23)
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-slot@1.0.1_react@18.2.0/node_modules/@radix-ui/react-slot/dist/index.module.js:21:23)
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-primitive@1.0.2_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-primitive/dist/index.module.js:46:26)
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-popper@1.1.1_@types+react@18.2.6_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-popper/dist/index.module.js:79:28)
at eval (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-select@1.2.1_@types+react@18.2.6_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-select/dist/index.module.js:215:28)
at c (webpack-internal:///./src/components/ui/select.tsx:29:11)
at Provider (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-context@1.0.0_react@18.2.0/node_modules/@radix-ui/react-context/dist/index.module.js:48:28)
at Provider (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-context@1.0.0_react@18.2.0/node_modules/@radix-ui/react-context/dist/index.module.js:48:28)
at CollectionProvider (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-collection@1.0.2_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-collection/dist/index.module.js:35:24)
at Provider (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-context@1.0.0_react@18.2.0/node_modules/@radix-ui/react-context/dist/index.module.js:48:28)
at Provider (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-context@1.0.0_react@18.2.0/node_modules/@radix-ui/react-context/dist/index.module.js:48:28)
at $cf1ac5d9fe0e8206$export$badac9ada3a0bdf9 (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-popper@1.1.1@types+react@18.2.6_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-popper/dist/index.module.js:64:28)
at $cc7e05a45900e73f$export$ef9b1a59e592288f (webpack-internal:///./node_modules/.pnpm/@radix-ui+react-select@1.2.1_@types+react@18.2.6_react-dom@18.2.0_react@18.2.0/node_modules/@radix-ui/react-select/dist/index.module.js:135:28)
at span
at Controller (webpack-internal:///./node_modules/.pnpm/react-hook-form@7.43.9_react@18.2.0/node_modules/react-hook-form/dist/index.esm.mjs:540:37)
at SelectField (webpack-internal:///./src/components/form-elements/SelectField.tsx:16:11)
at form
at FormProvider (webpack-internal:///./node_modules/.pnpm/react-hook-form@7.43.9_react@18.2.0/node_modules/react-hook-form/dist/index.esm.mjs:177:13)
at UserEditForm (webpack-internal:///./src/components/forms/UserEditForm.tsx:25:11)
at span
at div
at section
at HomeLayout (webpack-internal:///./src/components/layout/HomeLayout.tsx:16:11)
at Home (webpack-internal:///./src/pages/home/index.tsx:19:102)
at main
at div
at PageLayout (webpack-internal:///./src/components/layout/PageLayout.tsx:16:11)
at SessionProvider (webpack-internal:///./node_modules/.pnpm/next-auth@4.22.1_next@13.4.2_nodemailer@6.9.2_react-dom@18.2.0_react@18.2.0/node_modules/next-auth/react/index.js:455:24)
at MyApp (webpack-internal:///./src/pages/app.tsx:21:11)
at Hydrate (webpack-internal:///./node_modules/.pnpm/@tanstack+react-query@4.29.5_react-dom@18.2.0_react@18.2.0/node_modules/@tanstack/react-query/build/lib/Hydrate.mjs:31:3)
at QueryClientProvider (webpack-internal:///./node_modules/.pnpm/@tanstack+react-query@4.29.5_react-dom@18.2.0_react@18.2.0/node_modules/@tanstack/react-query/build/lib/QueryClientProvider.mjs:48:3)
at TRPCProvider (webpack-internal:///./node_modules/.pnpm/@trpc+react-query@10.26.0@tanstack+react-query@4.29.5_@trpc+client@10.26.0_@trpc+server@10.2_kiuw5sedmeoomoi5tskxnndkj4/node_modules/@trpc/react-query/dist/createHooksInternal-d15d0073.mjs:210:17)
at WithTRPC (webpack-internal:///./node_modules/.pnpm/@trpc+next@10.26.0_@tanstack+react-query@4.29.5_@trpc+client@10.26.0_@trpc+react-query@10.26.6zg2rcddaxitayxonvlu3qstbq/node_modules/@trpc/next/dist/index.mjs:42:83)
at PathnameContextProviderAdapter (webpack-internal:///./node_modules/.pnpm/next@13.4.2@babel+core@7.21.8_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/shared/lib/router/adapters.js:74:11)
at ErrorBoundary (webpack-internal:///./node_modules/.pnpm/next@13.4.2_@babel+core@7.21.8_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js:305:63)
at ReactDevOverlay (webpack-internal:///./node_modules/.pnpm/next@13.4.2_@babel+core@7.21.8_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js:854:919)
at Container (webpack-internal:///./node_modules/.pnpm/next@13.4.2_@babel+core@7.21.8_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/client/index.js:77:1)
at AppContainer (webpack-internal:///./node_modules/.pnpm/next@13.4.2_@babel+core@7.21.8_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/client/index.js:206:11)
at Root (webpack-internal:///./node_modules/.pnpm/next@13.4.2_@babel+core@7.21.8_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/client/index.js:384:11)
About this issue
- Original URL
- State: open
- Created a year ago
- Reactions: 5
- Comments: 15 (1 by maintainers)
Encountered this issue. It seems there are two colliding minor problems here, which made it more difficult to diagnose.
1 - The
refandvaluebelong on different elements 2 - theonChangeattribute is renamedHere’s the adjustment I made:
I just ran into this issue doing something like
as spreading
fieldis shown in @shadcn’s form docsHowever, doing
{...field}on the<Select />component prints the error mentioned in the description.i hit the same problem as @entropos and solved it by encapsulating my custom component in forwardRef, then mapping the ref to the SelectTrigger ref
I was facing the same issue on the following setup:
Problem is that the
<Select>component does not forward ref, meaning you can’t{....register('field')for instance. From that you have two options from what I saw:1 - If you are on React you can use form components from shadcn, or in my case:
That way I don’t get the ref error, but the value is passed to my form state