React JS приложение не отображает страницу
Есть React приложение. Иногда при редактировании какого-либо файла проекта может пострадать весь сайт, то есть все элементы сайта пропадают, а ошибок в vs code нет
Начались проблемы после подключения react-router-dom. Сам роутер находится в файле App.js На данный момент проблема в файле Dialogs.jsx Проблемы начались после map массивов. Бывали такие проблемы и с другими файлами. Вопрос: в чём проблема и как пофиксить
App.js
import React from 'react';
import './App.css';
import Header from './components/Header/Header.jsx';
import Navbar from './components/Navbar/Navbar.jsx';
import Profile from './components/Profile/Profile.jsx';
import Dialogs from './components/Dialogs/Dialogs.jsx';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
const App = () => {
return (
<BrowserRouter>
<div className='main-wrapper'>
<Header />
<Navbar />
<div className='main-wrapper-content'>
<Routes>
<Route path='/profile' element={<Profile />} />
<Route path='/dialogs/*' element={<Dialogs />} />
</Routes>
</div>
</div>
</BrowserRouter>
);
}
export default App;
Dialogs.jsx
import React from 'react';
import module from './Dialogs.module.css';
import { Link } from 'react-router-dom';
let DialogsData = [
{id: 1, userName: 'Liana'},
{id: 2, userName: 'Airat'},
{id: 3, userName: 'Irina'},
{id: 4, userName: 'Dinar'}
];
let MessagesData = [
{id: 1, message: 'Yo'},
{id: 2, message: 'sup?'},
{id: 3, message: 'you good?'},
{id: 4, message: 'damn'}
];
let DialogElements = DialogsData.map (d => <DialogItems id={d.id} userName={d.userName} />);
let MessageElements = MessagesData.map (mess => <Message id={mess.id} message={mess.message} />);
const DialogItems = (props) => {
let path = '/dialogs/' + props.id;
return (
<div className={module.dialog}>
<Link to={path} className={activeLink => activeLink.isActive ? module.active : module.item}>{props.userName}</Link>
</div>
)
}
const Message = (props) => {
return (
<div>{props.message}</div>
)
}
const Dialogs = () => {
return (
<div className={module.dialogsPage}>
<div className={module.dialogs}>
{DialogElements}
</div>
<div className={module.messages}>
{MessageElements}
</div>
</div>
)
}
export default Dialogs;
Ответы (1 шт):
Смог исправить, проблема была в том что в файле Dialogs.jsx в скобках после метода .map я пытался сослаться на компоненту которая в момент выполнения кода еще не была создана. Если вы посмотрите на файл Dialogs.jsx то можете заметить следующее:
let DialogElements = DialogsData.map (d => <DialogItems id={d.id} userName={d.userName} />);
let MessageElements = MessagesData.map (mess => <Message id={mess.id} message={mess.message} />);
const DialogItems = (props) => {
let path = '/dialogs/' + props.id;
return (
<div className={module.dialog}>
<Link to={path} className={activeLink => activeLink.isActive ? module.active : module.item}>{props.userName}</Link>
</div>
)
}
в переменной DialogElements можно заметить как я пытаюсь сослаться на компоненту DialogItems которая находиться ниже чем переменная DialogElements, то есть в момент присваивания значения для переменной DialogElements компоненты DialogItems еще не было. По крайней мере так я понял.