export default Comp => ({ children, ...props }: { children?: Node }) => (
<KeyboardAvoidingWrapper
keyboardVerticalOffset = {-getBottomSpace() / 2}
behavior = "padding"
enabled
>
<Comp {...props}>{children}</Comp>
</KeyboardAvoidingWrapper>
);
это поток кода ошибки генерирует: Отсутствует аннотация типа для Comp.Flow(InferError)
Редактировать: FlowVersion: 0.78.0 RN Версия: 0.57





Может быть, потому что вы используете <Comp /> до того, как определили его?
экспортировать Comp по умолчанию, экспортируя функцию компонента, и вы вызываете внутри него компонент, который может быть неопределенным.
Может быть, сначала попробуйте это, посмотрите, ошибка исчезла или нет?
export default Comp => ({ children, ...props }: { children?: Node }) => (
<KeyboardAvoidingWrapper
keyboardVerticalOffset = {-getBottomSpace() / 2}
behavior = "padding"
enabled
>
<Text {...props}>{children}</Text>
</KeyboardAvoidingWrapper>
);
Начиная с потока 0.89.0 тип, который вы хотите использовать для обернутых компонентов в HOC, — React.AbstractComponent.
Этот тип принимает два параметра типа: Config и Instance. Instance обычно можно безопасно игнорировать, а Config, хотя технически содержит оба типа Propsа такжеDefaultProps, фактически просто используется как тип Props. Таким образом, мы можем ввести практически любой компонент реакции (класс, функцию, что у вас есть) как React.AbstractComponent<Props>.
// @flow
import * as React from 'react';
export default <Props: { children: React.Node }>(
Comp: React.AbstractComponent<Props>,
) => ({ children, ...props }: Props) => (
//...
);
Обратите внимание, что мы добавляем граница к Propsуниверсальный, чтобы сообщить потоку, что Props всегда будет содержать свойство children типа React.Node, иначе, когда мы попытаемся извлечь children из нашего Props, поток не будет знать, что он существует.
Нуууу, так как вы работаете с react-native в более старой версии потока, вам нужно будет использовать React.ComponentType, который немного менее абстрактен (он не выполняет Instance вещи, кратко упомянутые ранее). Вот пример.
Ах, тогда вы хотите React.ComponentType. Это немного менее абстрактно, но должно соответствовать вашей цели. Я добавлю это к своему ответу.
«Я не могу использовать 0.89.0 или могу?» Я бы ответил на этот вопрос, но я действительно не знаю нативную экосистему :)
tnx lyle, полезный материал
что, если моя версия потока 0.78.0?, поскольку мой реактивный натив 0.57, я не могу использовать 0.89.0 или могу?