Файлы:
//index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './containers/App/App.js';
import { Provider } from 'react-redux';
import { store } from './store';
ReactDOM.render(
(
<Provider store={store}>
<App />
</Provider>
),
document.getElementById('root') || document.createElement("div")
);
//App.js
import React, { useEffect, useState } from "react";
import { getUser } from "../../firebase/user";
import Dashboard from "../Dashboard";
import SignIn from "../SignIn";
import { useSelector, useDispatch } from "react-redux";
import "../../styles/Global.scss";
import "../../styles/App.scss";
import "../../styles/Transitions.scss";
import "../../styles/Form.scss";
import "../../styles/Icons.scss";
import "../../styles/Cursors.scss";
const App = () => {
const dispatch = useDispatch();
const userId = useSelector(({ user: { userId } }) => userId);
const [ content, setContent ] = useState("");
useEffect(() => { dispatch(getUser()) }, []);
useEffect(() => {
if (userId) {
setContent("dashboard");
} else if (!userId && userId !== undefined) {
setContent("sign-in");
}
}, [userId])
console.log("Update App");
const Content = () => {
console.log("Update App Content")
if (userId === undefined) {
return null;
}
if (userId) {
return <Dashboard />;
} else {
return <SignIn />;
}
};
return (
<div className={`content-wrapper ${content}`}>
{Content()}
</div>
);
};
export default App;
//App.test.js
import React from "react";
import { shallow } from "enzyme";
import App from "./App";
describe('App', () => {
it('should render correctly', () => {
const Component = shallow(<App />);
expect(Component).toMatchSnapshot();
});
});
Полная ошибка:
Первая часть:
Инвариантное нарушение: недопустимый тип элемента: ожидается строка (для встроенных компонентов)или класс / функция (для составных компонентов), но получил: undefined.Вероятно, вы забыли экспортировать свой компонент из файла, в котором он определен, или вы перепутали импорт по умолчанию и имена.
Вторая часть (?!):
Предупреждение: React.createElement:Тип недействителен - ожидается строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получено: undefined.Вероятно, вы забыли экспортировать компонент из файла, в котором он определен, или вы перепутали импорт по умолчанию и имена.
Проверьте код по адресу index.js: 11.
Я знаю, чтоЕсть множество вопросов об этой ошибке, в то время как тестирование реагирует с шуткой и энзимом, а также с оберткой провайдера redux и т. д. Прочитайте многие из них, но, к сожалению, никто не помог.Есть идеи?