conscious-sapphire•3y ago
Select - Getting Label based on Foreign Key
Hi!
I have a resource
locationProducts, which maps a 'locationID' to a 'productID' from another resource called product.
I'd like to introduce a <Select/> to choose a locationProduct. However, the label is currently productID.
Is there a preferred way for me to reference the resource product for each productID in locationProducts to retrieve product's name to use as value?5 Replies
Hi @avangeous. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
Yes, you can use the
useSelect hook provided by refine to handle this. The useSelect hook allows you to handle an Ant Design Select component and includes out-of-the-box features such as fetchSize, sorting, and filtering.
Here is a basic example of how to use useSelect hook:
In this example, useSelect is used to fetch the list of products from the "products" resource. The options returned by useSelect is an array of objects, each representing a product. You can map over these options to render them as options in a select input. The label property of each option is used as the display text in the select input, and the value property is used as the value of the option.
You can replace "products" with "locationProducts" and adjust the IProduct interface to match the structure of your locationProduct objects.
For more information, you can refer to the useSelect documentation (https://refine.dev/docs/api-reference/core/hooks/useSelect/index).
Please note that this example assumes that your dataProvider is set up to handle the "products" resource. If it's not, you'll need to adjust your dataProvider accordingly. You can refer to the creating a data provider (https://refine.dev/docs/tutorial/understanding-dataprovider/create-dataprovider/) section for an example of how resources are handled.
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@1122927158348763206> kapa.ai is still learning and improving, please let us know how it did by reacting below
conscious-sapphireOP•3y ago
Ended up using a useList and manually mapping. If there's a better way, though, I'm all ears
xenial-black•3y ago
hello @avangeous, you can define field names in useSelect
https://refine.dev/docs/api-reference/core/hooks/useSelect/#optionlabel-and-optionvalue
useSelect | refine
useSelect hook allows you to manage any select (like a Html `` tag, React Select, etc...) component. Since it is designed as headless, It expects you to handle the UI.
conscious-sapphireOP•3y ago
🙏 Ahh I should have tried that. Thanks!