@bradleyhodges/sfsymbols-react

中文文档
8.1.3发布于 2026/09/08TypeScriptESM + CJS近 30 天下载 3190

用于在 React 应用程序中使用来自 @bradleyhodges/ sfsymbols 包的图标的组件和公用设备.

中文使用文档
文档目录10 节
  1. 使用 Apple 的 SF 符号图标的配套软件包 @bradleyhodges/ sfsymbols (英语) 在 R…
  2. 可用图标
  3. 开始
  4. 安装软件包
  5. 使用量
  6. 业绩优化
  7. 样式和未样式条目
  8. 主张和优先
  9. 元数据助手和类型
  10. 可选 VS 代码预览

@bradleyhodges/sfsymbols-反应

使用 Apple 的 SF 符号图标的配套软件包 @bradleyhodges/ sfsymbols (英语) 在 React/Next.js 中输入.

NPM Downloads by package author npmjs package GitHub repo
Version: 8.1.3 Platforms: Next.js – React.js – React Nav License: MIT

SF符号是一个由超过7000个符号组成的库,设计上与旧金山无缝地融合,是苹果平台的系统字体.

可用图标 二. 支助 开始 二. 支助 安装 二. 支助 使用量 二. 支助 业绩优化 二. 支助 样式条目 二. 支助 道具 二. 支助 VS 代码扩展 二. 支助 问题 二. 支助 调取请求

[叹息] SF符号由苹果公司许可,仅用于苹果平台. 此软件包或其他任何 @ bradleyhodges/ sfsymbols- * 软件包, 在苹果平台外使用是不允许的 .

可用图标

@bradleyhodges/ sfsymbols (英语) 包含有8,111个图标,其中包括609个补充品牌图标. 所有7 502个 Regular 重量图标 旧金山字体 包含。 其它的权重和可变图标指令不在此包中,但通过将中风放入向量路径可以使图标权重更重.

简而言之, 我为这个软件包创建了一个基本的图标浏览器,你可以在这里访问: bradleyhodges - sfsyms.vercel.app (原始内容存档于2017-03-28) Screenshot of a comment on a GitHub issue showing an image, added in the Markdown, of an Octocat smiling and raising a tentacle.

开始

此软件包包含允许您在 React/Next.js 项目中使用这些图标的 React 组件和元数据助手 。 SF 符号 8 的实际图标和图标数据来自 sfsymbols 软件包,你还需要安装.

安装软件包

您需要安装以下软件包来使用您的工程中的图标 :

pnpm add @bradleyhodges/sfsymbols @bradleyhodges/sfsymbols-react

组件包装器使 Web DOM <svg> 要素. React 本地应用程序需要本地 SVG 渲染器 换句话说 该库支持React 18和19.

使用量

就这么简单了 一旦安装了上述软件包,就可以简单地导入和使用:

import SFIcon from "@bradleyhodges/sfsymbols-react";
import { sfArrowUpCircleFill, sfCheckmark, sfCrossVialFill } from "@bradleyhodges/sfsymbols";

function MyComponent() {
    return (
        <div>
            <SFIcon icon={sfArrowUpCircleFill} />
            <SFIcon icon={sfCheckmark} weight={2} />
            <SFIcon icon={sfCrossVialFill} size={24} className="text-red-500" />
        </div>
    );
}

使用 图标浏览器 以找到要使用的图标.

业绩优化

这个 default 财务报告和审定财务报表 SFIcon 出口品是相同的纪念性、再现部分。 选择中直接导入图标时, 请使用精确 sf* 叶道. 这让一个捆绑者避免分析目录中的大根管:

import { SFIcon } from "@bradleyhodges/sfsymbols-react";
import { sfArrowUpCircleFill } from "@bradleyhodges/sfsymbols/sfArrowUpCircleFill";

<SFIcon icon={sfArrowUpCircleFill} size={24} color="rebeccapurple" />;

不要建立只用于支持运行时查找的导入每个图标的应用程序注册 。 导入应用程序使用的图标, 或者按要求加载被绑定的组 .

样式和未样式条目

根项将这些相容类合并到 className 使用 cn engine 带有默认的基准类集 : inline-block align-middle overflow-visible text-current box-content h-[1em] -leading-[0.125em]默认值 h-[1em] 当 size 或当地人 height 提供,而打工者则会赢得阶级冲突.

未设置的条目会让相同的 SVG 、 路径、 无障碍标记、 校正和事件不导入 cn 或添加类 :

import SFIcon from "@bradleyhodges/sfsymbols-react/unstyled";

<SFIcon icon={sfArrowUpCircleFill} className="icon" />;

将根条目用于既定布局行为。 使用 /unstyled 当应用程序拥有全部SVG布局并想要更小的边界时.

主张和优先

SFIcon 接受普通 React.SVGProps<SVGSVGElement> 加上下列道具:

Prop类型行为
iconIconDefinition所需的图标几何和元数据 .
sizenumber | string | null设定两个维度, 除非本地维度超过它 。 明确 0 被保存下来.
width, (中文(简体) ), height本地 SVG 值覆盖 size 独立.
colorCSS 颜色覆盖每个路径的源填充.
weightnumber | null添加根填充,中风,中风宽度和圆相接. 这是一个中风效应,而不是选择苹果的原生SF符号重量.
fillOpacitystring | number | null覆盖源路径不透明。 与 weight,遗留的默认是 1。 。 。 .
preservePathOpacityboolean保持源不透明, 当 weight 设置和 fillOpacity 缺席.
className, (中文(简体) ), style本地 SVG 值应用到 SVG 。 风格的条目合并了类;普通CSS级联和内置式规则仍然适用.
titlestring渲染器 <title> 并生成其链接的ID.
descriptionstring渲染器 <desc> 并生成其链接的ID。 仅一个描述不命名图像; 也提供 title, (中文(简体) ), aria-label,或外部可访问名称.
titleId, (中文(简体) ), descriptionIdstring替换相应的元素生成的ID 。 在缺少这一要素时,它们没有效力.
svgChildrenReactNode插入 SVG 等内容 defs 在图标路径之前。 遗产 children 仍然被忽视.
pathProps路径道具或 (path, index) => path props应用在生成填充和不透明后的安全通路演示和事件道具.

维度优先为本地 width 或者说 height,则 size,然后图标的正宽度,然后它的正高度,然后 1em。定义倒置是故意的相容平方。 零定义维度不用作倒置,而明确 size={0}, (中文(简体) ), width={0},或 height={0} 仍为零.

路径填充优先级为 pathProps.fill, (中文(简体) ), color源头填充 currentColor。路径不透明优先 pathProps.fillOpacity,明确 fillOpacity遗产 weight 默认,除非 preservePathOpacity 是真实的,然后源不透明. pathProps.style 遵循普通反应样式优先。 几何和子女所有权由制作人负责: d, (中文(简体) ), key, (中文(简体) ), ref, (中文(简体) ), children,以及 dangerouslySetInnerHTML 被公共类型排除在外,并在运行时过滤.

原生的SVG道具,包括参考和事件处理器被转发. 明确 role, (中文(简体) ), aria-hidden, (中文(简体) ), aria-label, (中文(简体) ), aria-labelledby,以及 aria-describedby 覆盖生成的无障碍属性 。 何时 title 财务报告和审定财务报表 aria-label 都在场 标题生成了 aria-labelledby 优先命名; 明确覆盖 aria-labelledby,包括 aria-labelledby={undefined},当 aria-label 应当提供名称。 没有无障碍名称 SVG 隐藏; 一个标题, aria-label外边 aria-labelledby 使其可见于无障碍API. 所生成的ID是独一无二的,在标题去除和修复之间是稳定的,当服务器输出需要时可以被确定性的ID所取代.

const iconRef = React.createRef<SVGSVGElement>();

<SFIcon
    ref={iconRef}
    icon={sfArrowUpCircleFill}
    title="Upload"
    description="Moves the selected item upward"
    svgChildren={
        <defs>
            <linearGradient id="upload-gradient">...</linearGradient>
        </defs>
    }
    pathProps={(path, index) => ({
        fill: index === 0 ? "url(#upload-gradient)" : path.fill,
    })}
/>

普通系列道具和SVG儿童可以通过React Server组件来渲染. 诸如 pathProps 调用和事件处理器必须在应用程序的正常服务器/客户端边界下引入客户端; 软件包不添加一个 use client 指令.

元数据助手和类型

根和(或) /metadata 导出条目 getIconKeywords 财务报告和审定财务报表 getIconVariants. 既验证了遗留的目录形状而不发生变异,又忽略了所继承的地产和存取者,维护了源序,还原了被冻结的副本.

import {
    getIconKeywords,
    getIconVariants,
} from "@bradleyhodges/sfsymbols-react/metadata";

const keywords = getIconKeywords(sfArrowUpCircleFill);
const variants = getIconVariants<"custom">(sfArrowUpCircleFill);

关键字数组保留有效 text, (中文(简体) ), generic,并有限度 priority 字段。 遗产字符串词典成为 { text } 未创建元数据条目。 变体地图保留了自己的字符串值并使用一个无效的原型,所以任意没有自定义名称,例如: toString 安全决定 undefined转换为 { ...variants } 当一个API特别需要普通对象原型时.

React Server 组件道具是这样的一个边界,因为React的可序列对象形式需要普通对象原型:

<ClientComponent variants={{ ...getIconVariants(icon) }} />

公共类型从根, /unstyled,且只选类型 /types 条目 : IconDefinition, (中文(简体) ), SFIconProps, (中文(简体) ), SFIconPathProps, (中文(简体) ), SFIconPath, (中文(简体) ), SFIconKeyword,以及 SFIconVariant添加剂 SFIconProps 类型保持了伴侣包遗留合同的完整.

可选 VS 代码预览

单独的扩展 extensions/vscode 提供本地徘徊预览 SF 符号: 预览和导入图标它将所安装的图标叶子描述为有界限的静态数据并插入精确的每立方厘米导入;它不是一个应用程序依赖,也不运送图标登记册.

在不安装或发布的情况下构建本地 VSIX :

cd extensions/vscode
pnpm install --frozen-lockfile
pnpm test
pnpm typecheck
pnpm package

那就选择 扩展: 从 VSIX 安装.. 在 VS 代码中选择 artifacts/sfsymbols-preview-0.1.0.vsix。请参见支持的语法、安全界限、限制、指令检查和孤立的扩展主机工作流程的扩展 README.

版本与发布记录

@bradleyhodges/sfsymbols-react 共发布 6 个版本,首次发布于 2025/09/23;过去 12 个月发布了 5 个版本。

版本发布日期距今
8.1.3latest2026/09/082 个月前
8.1.12026/09/072 个月前
8.0.42026/09/062 个月前
8.0.32026/09/062 个月前
8.0.22026/09/062 个月前
7.0.42025/09/231.1 年前

关于 @bradleyhodges/sfsymbols-react 的常见问题

@bradleyhodges/sfsymbols-react 是什么?

用于在 React 应用程序中使用来自 @bradleyhodges/ sfsymbols 包的图标的组件和公用设备.

如何安装 @bradleyhodges/sfsymbols-react?

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

@bradleyhodges/sfsymbols-react 支持 TypeScript 吗?

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

@bradleyhodges/sfsymbols-react 支持 ESM 还是 CommonJS?

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

@bradleyhodges/sfsymbols-react 可以商用吗?

@bradleyhodges/sfsymbols-react 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@bradleyhodges/sfsymbols-react 的下载量有多少?

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

@bradleyhodges/sfsymbols-react 还在维护吗?

最新版本 8.1.3 发布于 2026/09/08(2 个月前);至今共发布 6 个版本,其中过去 12 个月发布了 5 个;首次发布于 2025/09/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。