#css #reactjs #styled-components
#css #reactjs #styled-components
Вопрос:
Всем привет и спасибо за вашу помощь! В настоящее время я пытаюсь отредактировать отключенное свойство, доступное из библиотеки Semantic UI. Компонент есть Menu
компонент. Это отключенное свойство относится к Menu
дочерним элементам, таким как Menu.Item
.
Я также использую библиотеку Styled-Components для написания CSS. Я беру Menu.Item
и добавляю к нему стили. Когда я нацеливаюсь на отключенное свойство, оно не обновляется. Я хочу, чтобы он был светло-серым фоном, а затем, когда он активен, отображался с предыдущим стилем, который применяется динамически.
Реагирующий компонент
import React from "react";
import { CustomMenuItem } from "./StyledElements/MenuItemElements";
const StyledMenuItem = (props) => {
return <CustomMenuItem {...props} />;
};
export default StyledMenuItem;
}
export default StyledDropdownItem
Стильное оформление компонентов
import styled from "styled-components";
import { Menu } from "semantic-ui-react";
export const CustomMenuItem = styled(Menu.Item)`
color: ${({ theme }) => theme.menuItemColor};
/* Running 4 amp; signs to override bg color and the hover effect from semantic */
amp;amp;amp;amp; {
background-color: ${({ theme }) => theme.menuItemBGColor};
border: 0.25px solid ${({ theme }) => theme.menuItemBorderLeftRightColor};
border-top: 0;
border-bottom: 0;
amp;[aria-disabled="true"] {
color: ${({ theme }) => theme.menuItemNotActiveColor} !important;
background: ${({ theme }) => theme.menuItemNotActiveBGColor} !important;
}
amp;:disabled {
color: ${({ theme }) => theme.menuItemNotActiveColor} !important;
background: ${({ theme }) => theme.menuItemNotActiveBGColor} !important;
}
amp;:hover {
background-color: ${({ theme }) => theme.menuItemBGHover};
}
}
`;
Фактически используемый компонент
<StyledMenuItem className='scheduleEditorButton' size='tiny' disabled={!shouldUndo} title='Undo'>
<StyledIcon name='undo' /> // Irrelevant
<StyledHeaderText as="p" content="Undo"/> // Irrelevant
</StyledMenuItem>
Я не уверен, правильно ли я это делаю или нет. Я искал много мест и до сих пор не смог разобраться. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Комментарии:
1. Вы должны попробовать
amp;[aria-disabled="true"]
вместоamp;:disabled {
того, чтобы, как они, использовать атрибуты aria.2. Спасибо, что откликнулись. Я пошел дальше и попробовал это сделать, но, к сожалению, это не сработало.
3. Это странно, потому что и
amp;[aria-disabled="true"]
то, иamp;.disabled
другое работало на меня. Не могли бы вы опубликовать весь выпадающий компонент целиком?4. @ZsoltMeszaros Я только что отредактировал исходное сообщение с упомянутыми вами изменениями.
5. @ZsoltMeszaros Прошу прощения, я связывал неправильные компоненты, но я протестировал оба, и это все равно не сработало. Обновленный пост содержит актуальную информацию.