reactjs - React styled-component 按钮没有获得焦点
问题描述
React styled-component 按钮没有获得焦点
这是我继承的一些代码(见下文)。有带有标题和相应按钮(书签)的行。使用tab
按钮,我可以专注于标题。在另一个tab
焦点移动到样式按钮,但没有焦点环。在下一个tab
焦点转到带有焦点环的下一个标题,依此类推。
为什么 styled.button 没有获得焦点?
如果 IconWrapper 样式的组件(如下所列)被替换为,<button></button>
则图标获得焦点并具有焦点环。
<button
ref={node => (this.removeBookmarkBtns[i] = node)}
aria-label="Remove bookmark"
onClick={() => {this.markForRemoval(bookmark, i);}}
>
<BookmarkIcon />
</button>
继承代码
import styled from "styled-components";
<div>
... irrelevant stuff
<IconWrapper
ref={node => (this.removeBookmarkBtns[i] = node)}
aria-label="Remove bookmark"
onClick={() => {this.markForRemoval(bookmark, i);}}
>
<BookmarkIcon />
</IconWrapper>
... irrelevant stuff
</div>
相关的按钮样式组件
const IconWrapper = styled.button`
color: ${theme.colors.primary};
font-size: 2em;
cursor: pointer;
margin-left: 10px;
background-color: Transparent;
background-repeat: no-repeat;
border: none;
outline: none;
`;
const BookmarkIcon = styled(Icons.BookmarkCheck)`
display: block;
overflow: visible;
`;
Icon.BookmarkCheck
Icons.BookmarkCheck = props => (
<SVG {...props}>
<path d="m256 512a254.4 ...
</SVG>
);
解决方案
经过一番橡皮擦后,我突然意识到不是样式组件导致了问题,而是样式组件的 CSS。
删除outline: none
,当然它可以工作。
推荐阅读
- arrays - 如何在 mongoimport 中指定多个嵌套文档?
- c# - 带有 if 块 C# 的自定义系统属性
- javascript - 在 ExtJS 中使 EasyGridCombo 成为必需
- sql - 从 BQ 中刚刚过期的视图中查询
- spring-boot - JPA 不能在不删除双方的情况下删除 ManyToMany
- reactjs - 如何确定将什么状态传递给子组件
- vue.js - 尝试将 nativescript-photoviewer 与 vue 一起使用时出错
- jsf - p:remoteCommand 更新属性 VS p:commandButton 更新属性?
- html - 只读伪类应用于单选按钮,在 Firefox 中不是只读的
- javascript - 在 React 中定义作为道具传递的数据的长度?