这是我的代码。
<a onClick={handleClickOpen}>
<Typography paragraph component="span" color="primary" variant="body1">
{f('changeUnitsToCentimeters')}
</Typography>
</a>
我希望能够在排版组件上使用该事件侦听器,但来自材质UI的排版不接受onClick事件侦听器。我不想使用按钮,因为它会弄乱文本的外观。是否有一个元素可以 Package 排版组件,使其接受该侦听器?
2条答案
按热度按时间ct2axkht1#
如果您查看定义Typography component API的页面上props表的正下方,您会看到它说
提供的任何其他 prop 都将提供给根元素(原生元素)。
例如,如果你有
然后
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。rta7y2nd2#
为组件提供onClick属性