简体   繁体   中英

Radix UI Typescript Typings

Using radix-ui to make reusable components in typescript and react (bit of a typescript novice). The API documentation includes different props that can be used in the component but they are broken into sections (ex: Root, Trigger, Content, https://www.radix-ui.com/docs/primitives/components/dropdown-menu ). I would like to extend the props from the component so i could use the 'open' prop from Root and 'onSelect' from Item but this code

import * as RadixDropdownMenu from "@radix-ui/react-dropdown-menu"

export interface DropdownMenuItemProps extends RadixDropdownMenu.DropdownMenuProps {
   
}

only lets me pull props from the root props; I cant access the onSelect prop.

this example code gives me access to the 'onSelect' prop.

export interface DropdownMenuItemProps extends RadixDropdownMenu.MenuItemProps {
   
}

There isnt one single 'Parent Props' that can be extended. Feel like if you are using a library a single extension import should give you access to all of them? Or is there a way to combine the two extensions that im missing? Looking for a way to get access to all the props available on the component.

Thanks in advance.

it seems you are missing the typescript part here,

you could do:

import * as _ from "@radix-ui/react-dropdown-menu";

// if you prefer an interface
export interface DropdownMenuItemProps {
  open: _.DropdownMenuProps["open"];
  onSelect: _.DropdownMenuItemProps["onSelect"];
}

// if you prefer a type with Pick (dryer and better option to me)
export type DropdownMenuItemProps = Pick<_.DropdownMenuProps, "open"> &
  Pick<_.DropdownMenuItemProps, "onSelect">;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM