Есть ли способ проверить propTypes для наблюдателя (компонент) - PullRequest
0 голосов
/ 13 июля 2020

Например, в этом случае, если я передаю ObservedA в B как Comp:

const ObservedA = observer(class A extends React.Component {});

function B({Comp}) {
  return <Comp />;
}

B.propTypes = {
  Comp: PropTypes.node // Warning!
};

Выдается предупреждение:

Предупреждение: сбой тип prop: Недопустимое свойство Comp передано в B, ожидается ReactNode.

Есть ли способ проверить propTypes для observer(Component)?

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Если вы хотите проверить, является ли свойство Comp типом, который может отображаться, вы можете использовать PropTypes.elementType, начиная с prop-types 15.7.0:

B.propTypes = {
  Comp: PropTypes.elementType
};

It будет действителен для всех типов рендеринга, включая, например, поставщики контекста.

0 голосов
/ 14 июля 2020

Я не смог найти подходящий способ проверить observer(Component), но я должен знать, что babel переводит class в function() {}. Итак, я просто проверил опору func, например:

B.propTypes = {
  Comp: PropTypes.func
};

Я думаю, что это одно из решений, но не подходящее.

...