useNotice
useNotice is a custom hook that controls the notifications of the application.
Import
import { useNotice } from "@yamada-ui/react"
Usage
To display a notification, use useNotice. useNotice returns an instance to display and control the notification.
Editable example
const notice = useNotice() return ( <Button onClick={() => notice({ title: "Notification", description: "This is description." }) } > Show notification </Button> )
If you want to learn more about notifications, please check here.
Customize Notifications
The notification options are passed as arguments to useNotice or to the instance returned from useNotice.
The arguments of the instance returned from useNotice take precedence.
Change Display Time
You can change the display time with duration.
Editable example
const notice = useNotice({ duration: 8000 }) return ( <Button onClick={() => notice({ title: "Notification", description: "This is description.", duration: 10000, }) } > Show notification </Button> )
Maintain
To maintain the display, set duration to null.
Editable example
const notice = useNotice({ duration: null, isClosable: true }) return ( <Button onClick={() => notice({ title: "Notification", description: "This is description." }) } > Show notification </Button> )
If you maintain the display, it is recommended to set isClosable to true. Otherwise, the user has no means to close the notification.
Change Position
To change the display position, modify it with placement.
Editable example
const notice = useNotice() const placements = [ "top-left", "top", "top-right", "bottom-left", "bottom", "bottom-right", ] return ( <Wrap gap="md"> {placements.map((placement) => ( <Button key={placement} onClick={() => notice({ title: "Notification", description: "This is description.", placement, }) } > Show "{placement}" notification </Button> ))} </Wrap> )
Limiting the Number of Displays
To limit the number of displays, change it with limit.
Editable example
const notice = useNotice({ limit: 3 }) return ( <Button onClick={() => notice({ title: "Notification", description: "This is description." }) } > Show notification </Button> )
Changing Variants
We use the same variants as Alert.
Editable example
const notice = useNotice() const variants = ["basic", "solid", "subtle", "top-accent", "left-accent"] return ( <Wrap gap="md"> {variants.map((variant) => ( <Button key={variant} onClick={() => notice({ title: "Notification", description: "This is description.", variant, }) } > Show "{variant}" notification </Button> ))} </Wrap> )
Change Status
The status changes the color of the notification.
Editable example
const notice = useNotice() const statuses = ["info", "success", "warning", "error", "loading"] return ( <Wrap gap="md"> {statuses.map((status) => ( <Button key={status} onClick={() => notice({ title: "Notification", description: "This is description.", status, }) } > Show "{status}" notification </Button> ))} </Wrap> )
Using Color Schemes
To change colors, modify it with colorScheme.
Editable example
const notice = useNotice() const colorSchemes = ["green", "purple", "gray", "pink"] return ( <Wrap gap="md"> {colorSchemes.map((colorScheme) => ( <Button key={colorScheme} onClick={() => notice({ title: "Notification", description: "This is description.", colorScheme, }) } > Show "{colorScheme}" notification </Button> ))} </Wrap> )
Changing the Loading Variant
You can change the variant of the loading icon with icon.variant.
Editable example
const notice = useNotice() const variants = ["oval", "puff", "dots", "grid"] return ( <Wrap gap="md"> {variants.map((variant) => ( <Button key={variant} onClick={() => notice({ title: "Notification", description: "This is description.", status: "loading", icon: { variant }, }) } > Show "{variant}" notification </Button> ))} </Wrap> )
Update Notification
To update a notification, pass new options specifying the id generated from the instance.
Editable example
const notice = useNotice() const ref = useRef<string | number | undefined>(undefined) const onOpen = () => { ref.current = notice({ title: "Notification", description: "This is description.", colorScheme: "orange", duration: 30000, }) } const onUpdate = () => { if (ref.current) notice.update(ref.current, { title: "Updated notification", description: "This is updated description.", colorScheme: "blue", duration: 30000, }) } return ( <Wrap gap="md"> <Button onClick={onOpen}>Show notification</Button> <Button onClick={onUpdate}>Update last notification</Button> </Wrap> )
Close Notification
To close all notifications, use the closeAll method of the instance. To close individual notifications, specify the id generated from the instance.
Editable example
const notice = useNotice() const ref = useRef<string | number | undefined>(undefined) const onOpen = () => { ref.current = notice({ title: "Notification", description: "This is description.", duration: 30000, isClosable: true, }) } const onClose = () => { if (ref.current) notice.close(ref.current) } const onCloseAll = () => { notice.closeAll() } return ( <Wrap gap="md"> <Button onClick={onOpen}>Show notification</Button> <Button onClick={onClose}>Close last notification</Button> <Button onClick={onCloseAll}>Close all notification</Button> </Wrap> )
Customize the Close Event
To customize the close event, set closeStrategy to "element", "button", or "both". The default is "button".
"element": Close by clicking the element."button": Close by clicking the close button."both": Close by clicking either the element or the close button.
Editable example
const notice = useNotice({ isClosable: true, closeStrategy: "element" }) return ( <Button onClick={() => notice({ title: "Notification", description: "This is description.", isClosable: true, closeStrategy: "element", }) } > Show notification </Button> )
Customize the Component
To customize the component to be rendered, use component.
Editable example
const notice = useNotice({ component: ({ description }) => ( <Box color="white" py={3} px={4} bg="purple.500"> {description} </Box> ), }) return ( <Button onClick={() => notice({ description: "This is description." })}> Show notification </Button> )
Customize the Style
Editable example
const notice = useNotice({ style: { maxW: "100%", minW: "100%" } }) return ( <Wrap gap="md"> <Button onClick={() => notice({ title: "Notification", description: "This is description.", isClosable: true, }) } > Show notification </Button> <Button onClick={() => notice({ title: "Notification", description: "This is description.", isClosable: true, style: { minW: "60%" }, }) } > Show individual style notification </Button> </Wrap> )
Edit this page on GitHub

