Исходя из того, что вы сказали, я бы предположил, что зависимость заполнения компонента Input
зависит от вашего Dropdown
(что, похоже, вы уже поняли).
Поэтому вам будет лучше, если этот стиль "unqiue" будет связан с вашим компонентом Dropdown
через обернутый в него компонент стиля.
Следующий пример является грубым (и никоим образом не завершенным или работающим), но, надеюсь, он иллюстрирует, как владелец padding-left
должен находиться в пределах Dropdown
, а не случайный компонент в стиле, плавающий где-то еще в вашем коде основа.
. / Вход / Input.jsx
const Input = ({ value }) => (
<input value={value} />
);
. / Выпадающее / styled.js
const InputWrapper = styled.div`
position: relative;
padding-left: 3rem !important; /* Your padding */
`;
const Icon = styled.div`
position: absolute;
top: 0;
left: 0;
width: 3rem;
height: 3rem;
background: blue;
`;
const Menu = styled.ul`/* whatever */`;
. / Выпадающее / Dropdown.jsx
import Input from '...';
import { InputWrapper, Icon, Menu } from './styled';
const Dropdown = ({ options }) => (
<div>
<InputWrapper>
<Icon />
<Input value={'bleh'} />
</InputWrapper>
<Menu>{options}</Menu>
</div>
);
Эта установка будет продвигать повторно используемые self-contained
компоненты.