#reactjs #modal-dialog #focus #accessibility #styled-components
#reactjs #модальный диалог #фокус #Специальные возможности #styled-components
Вопрос:
В настоящее время я использую styled-components
5.0.1 с React. https://styled-components.com /
Для контекста моя цель — сфокусировать ловушку в модальном.
Моя проблема в том, что имена классов генерируются случайным styled-components
образом, поэтому я не могу получить доступ к этим DOM-узлам querySelector
. Моя другая проблема заключается в том, что я не могу использовать перенаправление React ref, поскольку мне пришлось бы выполнять много переадресации ссылок между деревьями компонентов.
Есть ли способ получить доступ к classname, который создается из styled-components? Если это так, я могу использовать querySelector
и использовать обычный способ захвата фокуса, получая доступ к узлам DOM через querySelector
.
Ответ №1:
Во-первых, ваш компонент должен иметь возможность обрабатывать переданный css:
import styled from "styled-components";
const Box = styled.div`
color: red;
${props => props.addCSS}
`;
const DatePicker = () => <Box>DatePicker</Box>;
Во-вторых, объявите стиль css.
import { css } from "styled-components";
const myCSS = css`
font-size: 60px;
`;
Наконец, передайте его дочернему компоненту.
<DatePicker addCSS={myCSS} />
Ответ №2:
Я смог решить эту проблему, обратившись к узлам DOM с помощью data-
атрибута.
Например,
const myComponent = styled.div`
// ...styles here
`;
const foo = () => (
<myComponent
data-foo-bar="foobar"
/>
);
console.log(document.querySelector('[data-a11y-id="HeaderNavBar-SearchButton"]');
// returns the DOM element for myComponent