reactjs 我可以使用什么元素来 Package 一个Typography组件,使其在不使用button的情况下接受onClick事件侦听器

ktca8awb  于 2022-12-22  发布在  React
关注(0)|答案(2)|浏览(87)

这是我的代码。

<a onClick={handleClickOpen}>
  <Typography paragraph component="span" color="primary" variant="body1">
    {f('changeUnitsToCentimeters')}
  </Typography>
</a>

我希望能够在排版组件上使用该事件侦听器,但来自材质UI的排版不接受onClick事件侦听器。我不想使用按钮,因为它会弄乱文本的外观。是否有一个元素可以 Package 排版组件,使其接受该侦听器?

ct2axkht

ct2axkht1#

如果您查看定义Typography component API的页面上props表的正下方,您会看到它说
提供的任何其他 prop 都将提供给根元素(原生元素)。
例如,如果你有

<Typography onClick={myFunction} paragraph component="span" color="primary" variant="body1">
    {f('changeUnitsToCentimeters')}
  </Typography>

然后myFunction将作为单击事件直接应用于span
也就是说,你不应该仅仅因为按钮会弄乱你的风格就不使用它。在span这样的非交互元素上放置一个点击侦听器是不可访问的,而使其可访问也不是那么简单。下面列出了一些需要考虑的事情,可能甚至不是详尽的:
1.你的范围存在于制表符索引中吗?
1.辅助技术能识别它是按钮吗
1.可以通过回车键和空格键点击吗?
1.它是否在适当的情况下自动提交表格?
原生按钮元素会自动为您处理所有这些事情,因此,与其让span具有可访问性,更简单的解决方案是使用CSS将按钮设置为您想要的样式。
对于Material UI,您可以将ButtonBase component作为Typography组件的 Package 器,因为ButtonBase具有所有这些功能以及更多功能。而不需要常规Material UI Button组件的所有自定义样式。或者,您可以不为按钮组件费心,而只使用常规的<button>和自定义样式。这里有一篇来自CSS技巧的文章,主题是overriding default button styles

rta7y2nd

rta7y2nd2#

为组件提供onClick属性

<a>
  <Typography onClick={handleClickOpen} paragraph component="span" color="primary" variant="body1">
    {f('changeUnitsToCentimeters')}
  </Typography>
</a>

相关问题