У меня есть компонент Dashboard, который получает состояние от редуктора и затем отображает информацию об учетной записи для пользователя на основе состояния. Компонент прекрасно рендерится при первом рендеринге. Однако, когда я обновляю sh страницу, все исчезает, ничего не рендерится. Я подумал, что это может быть проблемой с моим хуком useEffect, и эту проблему можно решить, поместив туда какое-то значение в массиве зависимостей. Однако я понимаю, что даже если бы проблема заключалась в том, что части компонентов JSX, которые не зависят от ловушки useEffect, должны по-прежнему отображаться. Даже этого не происходит, я ничего не получаю по refre sh. Как я могу решить эту проблему?
Вот ссылка на проект на Github: https://github.com/jevoncochran/Food-Truck-TrackR
Вот компонент:
const Dashboard = props => {
const [accountInfo, setAccountInfo] = useState({});
useEffect(() => {
axiosWithAuth()
.get(`/operator/${props.id}`)
.then(res => {
// console.log(res);
setAccountInfo(res.data);
})
.catch(err => console.log(err))
}, [props.id])
return (
<div>
<h1>This is the Dashboard component</h1>
<h2>Welcome, {accountInfo.username}</h2>
<h3>Your Trucks</h3>
{accountInfo.trucks && accountInfo.trucks.map(truck => (
<div key={truck.id}>
<p>{truck.name}</p>
<p>{truck.cuisine_type}</p>
<p>{truck.physical_address}</p>
<br/>
</div>
))}
</div>
)
}
const mapStateToProps = state => {
return {
id: state.account.id,
username: state.account.username,
email: state.account.email
}
}
export default connect(mapStateToProps, {})(Dashboard);
РЕДАКТИРОВАТЬ: Это как компонент Dashboard отображается. После прочтения комментариев других людей кажется, что после refre sh я теряю state.account.id, из-за чего я теряю dynamicRoute в App. js, что приводит к сбою рендеринга компонента Dashboard. Кто-нибудь видит решение этой проблемы:
function App(props) {
console.log(props);
const dynamicRoute = `/api/vendor/${props.accountId}`
return (
<Router>
<div className="App">
<Route exact path="/login" component={Login} />
<Route exact path="/register" component={Register} />
<PrivateRoute path={dynamicRoute} component={Dashboard} />
</div>
</Router>
);
}