Стилизованные компоненты v4 refObject - PullRequest
0 голосов
/ 12 марта 2019

Я слежу за тем, как документы из стилевых компонентов объяснили использование refs в v4 библиотеки здесь: https://www.styled -components.com / docs / advanced # refs

Однако на самом деле это не похоже на работу.Ссылка на содержание жалуется на неправильный тип, используемый при создании React.RefObject и установке его на ref на компоненте styled.

Вот что я сделал до сих пор:

const _Wrapper = styled.div`
position: relative;
height: 100%;
overflow: auto;
padding: 0px 48px;`;

Затем я создал refObject и инициализировал его в своем конструкторе:

this.flyoutRef = React.createRef();

Теперь при установке этого параметра на ref для styleled-компонента он не запуститсяа также показывает ошибку:

<_Wrapper ref={this.flyoutRef} >{children}</_Wrapper>

Там из TS отображается ошибка:

Type 'Ref<HTMLElement>' is not assignable to type 'string | (string & ((instance: HTMLDivElement | null) => void)) | (string & RefObject<HTMLDivElement>) | (((instance: Component<ThemedOuterStyledProps<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, any>, any, any> | null) => void) & string) | ... 6 more ... | undefined'.

В соответствии с документами из стиля-компоненты я реализую это именно так, как это показывает.Я даже пытался использовать forwardRef, как показали различные примеры, но ошибка по-прежнему остается той же.

Вот как я создал стилевой компонент с forwardRef:

const Div = ({ innerRef, ...props}: any) => <div innerRef={innerRef} {...props} />;

const Forwarded = React.forwardRef((props, ref) => (
    <Div {...props} innerRef={ref} />
));

const _Wrapper = styled(Forwarded)`
    position: relative;
    height: 100%;
    overflow: auto;
    padding: 0px 48px;
`;

И я все еще использую его так же, как и раньше:

<_Wrapper ref={this.flyoutRef} >{children}</_Wrapper>

Это теперь показывает эту ошибку:

Type 'Ref<HTMLElement>' is not assignable to type '(string & ((instance: {} | null) => void)) | (string & RefObject<{}>) | (((instance: Component<ThemedOuterStyledProps<WithOptionalTheme<RefAttributes<{}>, any>, any>, any, any> | null) => void) & ((instance: {} | null) => void)) | ... 4 more ... | undefined'.

Так что, документы из стилевых компонентов неправильны?Или мне не хватает чего-то, что нужно переслать сюда?Буду очень признателен за разъяснения о том, что здесь происходит, заранее благодарю за помощь.

Версии:

styled-components: 4.1.3

реакция: 16.8.3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...