eslint + flow: «атрибут» отсутствует в проверке реквизита (объект с идентификатором) - PullRequest
0 голосов
/ 13 февраля 2019

Сегодня я сталкиваюсь со странной проблемой,

У меня есть компонент React, который набирается с помощью flow (он же flowtype для SEO), и по какой-то причине здесь отображается ошибка ввода, вот упрощенный код.

type Props = {
  someObject: { [string]: string },
};

class ComponentOne extends React.Component<Props> {
  render() {
    return (
      // No idea why there's a linting error, seems like a bug

      <div className={this.props.someObject.someKey} />
    );
  }
}

const WithEnhancements = enhance(magic)(ComponentOne);

export default () => (
  <RenderPropComponent>
    {({ someProp }) => {
      return <WithEnhancements someProp={someProp} />;
    }}
  </RenderPropComponent>
);

Ошибка 'someObject.someKey' is missing in props validation.Я бью стену и понятия не имею, что может быть причиной, та же самая типизация для той же структуры данных, используемой в других компонентах, работает абсолютно нормально, может ли это быть ошибкой, когда eslint не устраивает многокомпонентные файлы?

Обновление: похоже на ошибку eslint, по какой-то причине она работает, когда реквизит реквизита подобен этому, а затем используется someObject.someKey:

const { someObject } = this.props;

1 Ответ

0 голосов
/ 15 февраля 2019

Это в настоящее время ошибка eslint, сообщается здесь .Это можно исправить, деструктурировав реквизит, как упомянуто frontendgirl, и хотя это может показаться не чистым кодом, вам нужно будет делать это только для компонентов, у которых есть объект карты (один со свойством indexer, { [string]: string }.

...