javascript - 为什么浏览器在反应的嵌套路由中加载空白页面
问题描述
如您所见,我想通过使用另一个组件来获取新闻列表,然后通过单击每个组件来显示新闻项目的全部内容。第一步(显示新闻列表)确实运行,但是当我点击其中一个时,我会转到特定路线,但它是空白的:|
我认为这是因为反应路由器不知道路由,并且我的语法有问题,
如果您**可以**使用此代码,请帮助我。
import React, { useState, useEffect } from 'react';
import {
Route,
useHistory,
Switch
} from 'react-router-dom';
import styled from 'styled-components';
import apis from '../../app/apis';
import cts from '../../app/cts';
const News = (props) => {
const history = useHistory();
console.log(history);
const [news, setNews] = useState(null);
useEffect(() => {
console.log({props});
getNews('556', '556');
}, []);
const NewsBox = styled.div`
margin-top: 20px;
margin-bottom: 20px;
`;
const NewsTitle = styled.h1`
font-size: 25pt;
`;
const NewsDate = styled.h3`
font-size:18pt;
color: #aaa;
`;
const getNews = async (project, district) => {
try {
const { data, status } = await cts('get', apis.getNewsApi(project, district));
if (status !== 200 && !data) {
throw new Error('Error fetching data');
} else {
console.log(data);
const newsList = Object.values(data.items).map(item =>
<div>
<br />
<NewsBox>
<NewsTitle onClick={() => history.push(`/news/${item.id}`)}>
{item.title}</NewsTitle>
<br />
<NewsDate>{item.date}</NewsDate>
</NewsBox>
<br />
</div>
)
setNews(newsList);
}
} catch (e) {
console.log(e);
}
};
const SS = ({match}) => <p>say hello to me</p>;
return (
<div>
{
news
}
<Switch>
<Route
path="/users/:id"
exact
key={() => Math.random()}
render={() => (
<SS />)}
/>
</Switch>
</div>
);
};
export default News;
解决方案
推荐阅读
- ios - swift如何从api设置按钮图像
- angular - 使用 Jasmine 的未定义依赖项
- python - 如何从 Pandas Dataframe 中预先知道的数据集中转换货币
- php - 如何在 Magento 2.3 中加入两个自定义表
- python - 如何在主进程中设置的 Python 多进程中获取全局数据?
- java - 在 Eclipse 中编译成功,但使用终端失败
- azure - 无法从 wwwroot/bin 文件夹中删除 Azure Function dll
- python - 将(新)文档从 Dataframe 添加到 MongoDB 的最有效方法是什么?
- image-processing - 图像预处理 - 未按相应顺序读取训练和测试图像数据
- html - 有没有办法根据Angular中的单元格值对表格进行排序?