@ chakra-ui/ 模式
模式是主窗口或其他对话框上覆盖的窗口 窗口。 模式对话框后面的内容 惰性 表示用户不能 与对话框后面的内容交互.
安装
yarn add @chakra-ui/modal
# or
npm i @chakra-ui/modal
导入组件
import {
Modal,
ModalOverlay,
ModalContent,
ModalHeader,
ModalFooter,
ModalBody,
ModalCloseButton,
} from "@chakra-ui/react"
使用量
当模式打开时, 焦点被传送到模式并设定为第一个可制表符
键。 如果没有标签元素,则将焦点设置在 ModalContent。 。 。 .
function BasicUsage() {
const { isOpen, onOpen, onClose } = useDisclosure()
return (
<>
<Button onClick={onOpen}>Open Modal</Button>
<Modal isOpen={isOpen} onClose={onClose}>
<ModalOverlay>
<ModalContent>
<ModalHeader>Modal Title</ModalHeader>
<ModalCloseButton />
<ModalBody>
<Lorem count={2} />
</ModalBody>
<ModalFooter>
<Button colorScheme="blue" mr={3} onClick={onClose}>
Close
</Button>
<Button variant="ghost">Secondary Action</Button>
</ModalFooter>
</ModalContent>
</ModalOverlay>
</Modal>
</>
)
}
Modal 关闭时控制焦点
当对话框关闭时, 它返回焦点到触发的元素 。 设定
finalFocusRef ,用于在模式打开时应当聚焦的元素.
function ReturnFocus() {
const { isOpen, onOpen, onClose } = useDisclosure()
const finalRef = React.useRef()
return (
<>
<Box ref={finalRef} tabIndex={-1} aria-label="Focus moved to this box">
Some other content that'll receive focus on close.
</Box>
<Button mt={4} onClick={onOpen}>
Open Modal
</Button>
<Modal finalFocusRef={finalRef} isOpen={isOpen} onClose={onClose}>
<ModalOverlay>
<ModalContent>
<ModalHeader>Modal Title</ModalHeader>
<ModalCloseButton />
<ModalBody>
<Lorem count={2} />
</ModalBody>
<ModalFooter>
<Button colorScheme="blue" mr={3} onClick={onClose}>
Close
</Button>
<Button variant="ghost">Secondary Action</Button>
</ModalFooter>
</ModalContent>
</ModalOverlay>
</Modal>
</>
)
}
提醒对话框
提醒Dialog 组件使用强制确认中断用户 或行动.
安装
yarn add @chakra-ui/alert-dialog
# or
npm i @chakra-ui/alert-dialog
导入组件
import {
AlertDialog,
AlertDialogBody,
AlertDialogFooter,
AlertDialogHeader,
AlertDialogContent,
AlertDialogOverlay,
} from "@chakra-ui/react"
基本用途
使用量
警报Dialog要求您提供 leastDestructiveRef 道具 (英语).
依据 WAI-ARIA 规格, (中文(简体) ), 当对话框打开时,重点应放在破坏最小的元素上, 防止用户意外确认破坏行动.
function AlertDialogExample() {
const [isOpen, setIsOpen] = React.useState()
const onClose = () => setIsOpen(false)
const cancelRef = React.useRef()
return (
<>
<Button colorScheme="red" onClick={() => setIsOpen(true)}>
Delete Customer
</Button>
<AlertDialog
isOpen={isOpen}
leastDestructiveRef={cancelRef}
onClose={onClose}
>
<AlertDialogOverlay>
<AlertDialogContent>
<AlertDialogHeader fontSize="lg" fontWeight="bold">
Delete Customer
</AlertDialogHeader>
<AlertDialogBody>
Are you sure? You can't undo this action afterwards.
</AlertDialogBody>
<AlertDialogFooter>
<Button ref={cancelRef} onClick={onClose}>
Cancel
</Button>
<Button colorScheme="red" onClick={onClose} ml={3}>
Delete
</Button>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialogOverlay>
</AlertDialog>
</>
)
}
使用打字符
使用以上示例会丢出一个打字错误 。 你会想修改
类型 useRef 钩入您所关注的和 HTML 元素
默认值为无效.
const cancelRef = React.useRef<HTMLButtonElement>(null)
绘图器
抽取器组件是一个从屏幕边缘滑出面板. 这个 当用户需要完成某项任务或查看一些细节时,可以有用 不离开当前页面.
安装
yarn add @chakra-ui/modal
# or
npm i @chakra-ui/modal
导入组件
import {
Drawer,
DrawerOverlay,
DrawerContent,
DrawerHeader,
DrawerFooter,
DrawerBody,
DrawerCloseButton,
} from "@chakra-ui/react"
基本用途
使用量
默认情况下,将焦点放在 DrawerCloseButton 当抽屉打开.
function DrawerExample() {
const { isOpen, onOpen, onClose } = useDisclosure()
const btnRef = React.useRef()
return (
<>
<Button ref={btnRef} colorScheme="teal" onClick={onOpen}>
Open
</Button>
<Drawer
isOpen={isOpen}
placement="right"
onClose={onClose}
finalFocusRef={btnRef}
>
<DrawerOverlay />
<DrawerContent>
<DrawerCloseButton />
<DrawerHeader>Create your account</DrawerHeader>
<DrawerBody>
<Input placeholder="Type here..." />
</DrawerBody>
<DrawerFooter>
<Button variant="outline" mr={3} onClick={onClose}>
Cancel
</Button>
<Button color="blue">Save</Button>
</DrawerFooter>
</DrawerContent>
</Drawer>
</>
)
}