material-ui [SvgIcon] 标题:Access属性在与component属性结合使用时无法正常工作

nkkqxpd9  于 23天前  发布在  其他
关注(0)|答案(4)|浏览(20)

重复问题

  • 我搜索了现有的问题

最新版本

  • 我测试了最新版本

当前行为 😯

当我使用 SvgIconcomponent prop,例如:

<SvgIcon
  component={MySvgIcon}
  titleAccess="My title"
/>

aria-hidden="true" 将被移除,role="img" 将被添加,但没有 <title>My title</tag> 被添加到 svg 中

预期行为 🤔

titleAccess prop 应该在 SVG 元素上添加 <title>my title here</title> 标签。

重现步骤 🕹

步骤:

  1. 使用 webpack svgr 插件将自定义 SVG 图标导入为 ReactComponent"
import { ReactComponent as StarIcon } from './star.svg';
  1. component prop 中的 SvgIcon 组件中使用导入的 SVG,并使用 titleAccess
<SvgIcon
  component={StarIcon}
  titleAccess="My title"
/>

上下文 🔦

我想使用自定义的 SVG 图标与 Material UI SvgIcon 组件一起使用,并使其完全可访问。

你的环境 🌎

System: OS: macOS 12.4 Binaries: Node: 16.14.0 - ~/.nvm/versions/node/v16.14.0/bin/node Yarn: 1.22.17 - ~/.nvm/versions/node/v16.14.0/bin/yarn npm: 8.10.0 - ~/work/PWA-Framework/node_modules/.bin/npm Browsers: Chrome: 103.0.5060.114 Edge: Not Found Firefox: 98.0.2 Safari: 15.5 npmPackages: @emotion/styled: 10.3.0 @types/react: 18.0.1 => 18.0.1 react: 18.0.0 => 18.0.0 react-dom: 18.0.0 => 18.0.0 styled-components: 5.3.5 => 5.3.5 typescript: 4.4 => 4.4.4

vmpqdwk3

vmpqdwk31#

请提供一个CodeSandbox(https://mui.com/r/issue-templatehttps://mui.com/r/ts-issue-template),一个指向GitHub仓库的链接,或者提供一个最小的代码示例来重现问题。
以下是提供最小示例的一些提示:https://stackoverflow.com/help/mcve

kx5bkwkv

kx5bkwkv2#

你好!
我也遇到了这个问题,并整理了一个关于问题的最小复现。
https://codesandbox.io/s/mui-svgicon-component-prop-titleaccess-issue-repro-ml1ucj?file=/src/App.tsx
当在React函数组件中使用component prop时,titleAccess不起作用(第一个示例)。
第二个示例展示了将<path/>传递给子元素,这正确地应用了<title>
希望这对你有帮助,感谢这个很棒的库!

lo8azlld

lo8azlld3#

感谢@richardhuf84提供的代码示例:)

lnvxswe2

lnvxswe24#

看起来<title>标签已被移除,因为SvgIconRoot使用了as属性,并用component属性的值替换了Root节点。
https://github.com/mui/material-ui/blob/master/packages/mui-material/src/SvgIcon/SvgIcon.js#L97

相关问题