Rating
Rating
は、ユーザーが評価を行うために使用させるコンポーネントです。
インポート
import { Rating } from "@yamada-ui/react"
使い方
編集可能な例
<Rating />
サイズを変更する
編集可能な例
<VStack> <For each={["xs", "sm", "md", "lg", "xl"]}> {(size, index) => <Rating key={index} size={size} defaultValue={3} />} </For> </VStack>
カラースキームを変更する
編集可能な例
<VStack> <For each={["purple", "pink"]}> {(colorScheme, index) => ( <Rating key={index} colorScheme={colorScheme} defaultValue={3} /> )} </For> </VStack>
デフォルトの値を設定する
デフォルトの値を設定する場合は、defaultValue
に数値を設定します。
編集可能な例
<Rating defaultValue={3} />
アイテム数を変更する
アイテム数を変更する場合は、items
に数値を設定します。
編集可能な例
<VStack> <For each={[4, 5, 6]}> {(items, index) => <Rating key={index} items={items} />} </For> </VStack>
小数点を許容する
小数点を許容する場合は、fractions
に数値を設定します。
例えば、0.25
を許容したい場合は、4
を設定します。
編集可能な例
<VStack> <For each={[ { fractions: 2, defaultValue: 1.5, }, { fractions: 3, defaultValue: 2.33, }, { fractions: 4, defaultValue: 3.75, }, ]} > {({ fractions, defaultValue }, index) => ( <Rating key={index} fractions={fractions} defaultValue={defaultValue} /> )} </For> </VStack>
色を変更する
色を変更する場合は、color
に文字列または関数を設定します。color
は、アイテムの数値を提供します。
編集可能な例
const getColor = (value: number) => { switch (value) { case 1: return "red.500" case 2: return "orange.500" case 3: return "yellow.500" case 4: return "green.500" case 5: return "blue.500" default: return undefined } } return ( <VStack> <Rating color="green.500" defaultValue={3} /> <Rating color={getColor} defaultValue={3} /> </VStack> )
アイコンをカスタマイズする
アイコンをカスタマイズする場合は、emptyIcon
とfilledIcon
にRectNode
または関数を設定します。emptyIcon
とfilledIcon
は、アイテムの数値を提供します。
emptyIcon
: 選択されていないアイコンに使われます。filledIcon
: 選択されているアイコンに使われます。
編集可能な例
const getColor = (value: number) => { switch (value) { case 1: return "red.500" case 2: return "orange.500" case 3: return "yellow.500" case 4: return "green.500" case 5: return "blue.500" default: return undefined } } const getIcon = (value: number) => { switch (value) { case 1: return <AngryIcon /> case 2: return <FrownIcon /> case 3: return <SmileIcon /> case 4: return <LaughIcon /> case 5: return <SmilePlusIcon /> default: return null } } return ( <VStack> <Rating defaultValue={3} emptyIcon={<GhostIcon />} filledIcon={<GhostIcon />} /> <Rating gap="xs" color={getColor} emptyIcon={getIcon} filledIcon={getIcon} /> </VStack> )
無効化する
無効化する場合は、isDisabled
をtrue
に設定します。
編集可能な例
<VStack> <Rating isDisabled defaultValue={3} /> <Fieldset isDisabled legend="How satisfied are you with Yamada UI?"> <Rating defaultValue={3} /> </Fieldset> </VStack>
読み取り専用にする
読み取り専用にする場合は、isReadOnly
をtrue
に設定します。
編集可能な例
<VStack> <Rating isReadOnly defaultValue={3} /> <Fieldset isReadOnly legend="How satisfied are you with Yamada UI?"> <Rating defaultValue={3} /> </Fieldset> </VStack>
制御する
編集可能な例
const [value, onChange] = useState<number>(3) return <Rating value={value} onChange={onChange} />
React Hook Form
を使う
編集可能な例
type Data = { rating: boolean } const { control, handleSubmit, watch, formState: { errors }, } = useForm<Data>() const onSubmit: SubmitHandler<Data> = (data) => console.log("submit:", data) console.log("watch:", watch()) return ( <VStack as="form" onSubmit={handleSubmit(onSubmit)}> <Fieldset isInvalid={!!errors.rating} legend="How satisfied are you with Yamada UI?" errorMessage={errors.rating ? errors.rating.message : undefined} > <Controller name="rating" control={control} render={({ field }) => <Rating {...field} />} /> </Fieldset> <Button type="submit" alignSelf="flex-end"> Submit </Button> </VStack> )
GitHubでこのページを編集する