@chakra-ui/popper

中文文档
3.1.0发布于 2023/07/19MITTypeScriptESM + CJS近 30 天下载 144.2万

用于 poper.js 的回放组件和钩子包装器

中文使用文档
文档目录8 节
  1. 安装
  2. 基本用途
  3. 参数
  4. 改变位置
  5. 匹配引用宽度
  6. 将弹出器放入引用
  7. 在固定容器内使用
  8. 添加过渡

弹出器

用于 poper.js 容器周围动态定位的反钩包装器 参考文献.

这是Chakra-UI的内部钩子,它没有被铸币局覆盖,可能 导致应用程序出现出乎意料或中断的行为。 冒着风险使用它们.

安装

yarn add @chakra-ui/popper

基本用途

默认情况下 usePopper 弹出器、 参考和 箭头.

import { Box } from "@chakra-ui/layout"
import { Button } from "@chakra-ui/button"
import { useDisclosure } from "@chakra-ui/hooks"
import { usePopper } from "@chakra-ui/popper"

function Example() {
  const { isOpen, onToggle } = useDisclosure()
  const { popperRef, referenceRef, getArrowProps } = usePopper()
  return (
    <>
      <Button ref={referenceRef} onClick={onToggle} mb={2}>
        {isOpen ? "Click me to see less" : "Click me to see more"}
      </Button>
      {isOpen && (
        <Box ref={popperRef} bg="red">
          <div
            {...getArrowProps({
              style: {
                background: "red",
              },
            })}
          />
          This is a popover for the button!
        </Box>
      )}
    </>
  )
}

参数

改变位置

你可以改变流行乐的位置,通过 placement 选项到 usePopper 并设置到 popper.js 放置.

const { popperRef, referenceRef } = usePopper({
  placement: "right-start",
})

匹配引用宽度

在某些情况下,你可能想要允许 Popper 取去宽度 参考文献。 例如,自动完成,选择等.

为了实现这一点,通过 matchWidth 选项并设定为 true

const { popperRef, referenceRef } = usePopper({
  matchWidth: true,
})

将弹出器放入引用

您可以将弹出器放在参考文献旁边, 不带边距或距离 他们之间 用于创建自动完整或打字头特性 .

const { popperRef, referenceRef } = usePopper({
  gutter: 0,
})

在固定容器内使用

如果参考元素在固定容器内,应当使用 fixed 战略.

const { popperRef, referenceRef } = usePopper({
  strategy: "fixed",
})

添加过渡

当向 popper 组件添加过渡时,通常建议应用 popper)和向不同元素过渡.

// 1. Import components
import { useDisclosure } from "@chakra-ui/hooks"
import { usePopper } from "@chakra-ui/popper"
import { motion, AnimatePresence, Variants } from "framer-motion"

export function Example() {
  // 2. Create toggle state
  const { isOpen, onToggle } = useDisclosure()

  // 3. Create motion variants
  const slide: Variants = {
    exit: {
      y: -2,
      opacity: 0,
    },
    enter: {
      y: 0,
      opacity: 1,
    },
  }

  // 4. Consume the `usePopper` hook
  const { getPopperProps, getReferenceProps, getArrowProps, transformOrigin } =
    usePopper({
      placement: "bottom-start",
    })

  return (
    <>
      <button {...getReferenceProps({ onClick: onToggle })}>Toggle</button>
      <div {...getPopperProps()}>
        <AnimatePresence>
          {isOpen && (
            <motion.div
              transition={{
                type: "spring",
                duration: 0.2,
              }}
              variants={slide}
              initial="exit"
              animate="enter"
              exit="exit"
              style={{
                background: "red",
                width: 200,
                transformOrigin,
                borderRadius: 4,
              }}
            >
              Testing
              <div
                {...getArrowProps({
                  style: {
                    background: "red",
                  },
                })}
              />
            </motion.div>
          )}
        </AnimatePresence>
      </div>
    </>
  )
}

当不有条件地使弹出器,我们建议使用 visibility: hidden 改为 hidden 或者说 display: none

版本与发布记录

@chakra-ui/popper 共发布 160 个版本,首次发布于 2020/06/21;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.1.0latest2023/07/193 年前
0.0.0-dev-20230718132637dev2023/07/183 年前
0.0.0-dev-202307181307422023/07/183 年前
0.0.0-dev-202307181247172023/07/183 年前
0.0.0-dev-202307181223362023/07/183 年前
3.0.142023/05/033 年前

其他发布通道:canary → 1.0.0-next.0,pr → 0.0.0-pr-202215132532,next → 3.0.0-next.3,dev → 0.0.0-dev-20230718132637。

关于 @chakra-ui/popper 的常见问题

@chakra-ui/popper 是什么?

用于 poper.js 的回放组件和钩子包装器

如何安装 @chakra-ui/popper?

在项目目录运行 npm install @chakra-ui/popper,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@chakra-ui/popper 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@chakra-ui/popper 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@chakra-ui/popper 可以商用吗?

@chakra-ui/popper 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@chakra-ui/popper 的下载量有多少?

根据 npm 官方下载统计,@chakra-ui/popper 在 2026/10/10 – 2026/11/08 这 30 天内被下载 1,441,515 次,日均约 48,051 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@chakra-ui/popper 还在维护吗?

最新版本 3.1.0 发布于 2023/07/19(3 年前);至今共发布 160 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/06/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。