Как разрешить импорт eslint / no-named-as-default
после просмотра документации для Правила ESLint import / no-named-as-default, я все еще смущен тем, что именно я делаю неправильно.
у меня есть следующая структура файлов
.
├── ButtonBack.css
├── ButtonBack.jsx
├── __tests__
│ └── ButtonBack.test.jsx
└── index.js
В ButtonBack.jsx содержит следующий код
import React from 'react';
import PropTypes from 'prop-types';
export default class ButtonBack extends React.Component {
... code removed to keep example short ...
}
__тесты _ _ / ButtonBack.тест.jsx содержит следующий код
import React from 'react';
import { shallow } from 'enzyme';
import ButtonBack from '../ButtonBack'; // <== this line has an eslint warning
... code removed to keep example short ...
проблема в том, что мой Линтер говорит, что import ButtonBack from '../ButtonBack
нарушает следующий lint правила:
- import/no-named-as-default
- import / no-named-as-default-member
Я не могу понять, почему мой оператор импорта нарушает правило lint. Удаление имени класса в ButtonBack.jsx (export default class extends React.Component
) также не решает проблему.
4 ответов
столкнулся с этой же проблемой, и из того, что я вижу, вам просто нужно отключить это правило (это то, что я сделал, по крайней мере)
" к сожалению, React + Redux является наиболее распространенным сценарием. Однако, есть много других случаев, когда HOCs заставит разработчиков закрыли правило."
https://github.com/benmosher/eslint-plugin-import/issues/544
https://github.com/reactjs/react-redux/issues/119
https://github.com/18F/calc/pull/1235
.eslintrc
"rules": {
"import/no-named-as-default": 0
}
исходная проблемная строка:
import ButtonBack from '../ButtonBack';
Исправлена Строка:
import { ButtonBack } from '../ButtonBack';
столкнулся с этой проблемой, потому что я использую React+Redux:
export class ButtonBack extends React.Component {
// code removed
}
export default connect(null, null)(ButtonBack);
Итак, с кодом выше это даст мне предупреждение:
import ButtonBack from ./ButtonBack;
изменение на следующие исправления проблемы
import ConnectedButtonBack from ./ButtonBack;
не экспорт class ButtonBack
вероятно, также исправит проблему, но мне нравится экспортировать ее, чтобы помочь с тестированием.
источник: http://redux.js.org/docs/recipes/WritingTests.html#connected-components
Это довольно глупо для esLint, но то, что я сделал, чтобы решить, это проверить файл, который экспортирует, у меня случайно был класс экспорта, а затем экспортировать соединение по умолчанию. Все еще была ошибка lint, повторно написал строку импорта в parent и eslint очистил предупреждение.