【实践题】使用「Router」及父子路由实现前端模块控制【完成新闻页面,新闻详情页面,路由跳转,携带参数】
时间: 2024-03-14 10:47:28 浏览: 203
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
好的,这是一个实践题,需要一定的前端开发经验。我会尽力帮助你完成这个任务。首先,我们需要确定页面结构和路由规则。
假设我们有一个新闻网站,包括首页、新闻列表页和新闻详情页。路由规则如下:
- 首页:/
- 新闻列表页:/news
- 新闻详情页:/news/:id
其中,:id 是动态参数,表示新闻的唯一标识符。
接下来,我们需要创建一个 React 应用,并安装 react-router-dom。
```bash
# 使用 create-react-app 创建 React 应用
npx create-react-app news-app
# 安装 react-router-dom
npm install react-router-dom --save
```
安装完成后,我们可以开始编写代码了。首先,我们需要在 src 目录下创建一个 App.js 文件,并添加以下代码:
```jsx
import React from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Home from './pages/Home';
import NewsList from './pages/NewsList';
import NewsDetail from './pages/NewsDetail';
function App() {
return (
<Router>
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/news" component={NewsList} />
<<Route path="/news/:id" component={NewsDetail} />
</Switch>
</Router>
);
}
export default App;
```
在这里,我们使用 BrowserRouter 作为路由容器,并使用 Switch 和 Route 组件来定义路由规则。exact 属性表示精确匹配,即只有当路径完全匹配时才渲染对应的组件。
接下来,我们需要创建三个页面组件:Home、NewsList 和 NewsDetail。在 src/pages 目录下创建这三个组件,并分别添加以下代码:
Home.js:
```jsx
import React from 'react';
function Home() {
return (
<div>
<h1>首页</h1>
</div>
);
}
export default Home;
```
NewsList.js:
```jsx
import React from 'react';
import { Link } from 'react-router-dom';
function NewsList() {
const newsList = [
{ id: 1, title: '新闻标题1' },
{ id: 2, title: '新闻标题2' },
{ id: 3, title: '新闻标题3' },
];
return (
<div>
<h1>新闻列表</h1>
<ul>
{newsList.map(news => (
<li key={news.id}>
<Link to={`/news/${news.id}`}>{news.title}</Link>
</li>
))}
</ul>
</div>
);
}
export default NewsList;
```
NewsDetail.js:
```jsx
import React from 'react';
import { useParams } from 'react-router-dom';
function NewsDetail() {
const { id } = useParams();
return (
<div>
<h1>新闻详情</h1>
<p>新闻 ID:{id}</p>
</div>
);
}
export default NewsDetail;
```
在这里,我们使用 Link 组件实现路由跳转,并通过 useParams() Hook 获取动态参数。
最后,我们需要在 src/index.js 文件中渲染 App 组件。添加以下代码:
```jsx
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));
```
现在,我们已经完成了前端模块控制的实现。你可以在浏览器中打开 http://localhost:3000/ 查看效果。
阅读全文