如何从头开始构建一个React 18+redux+动态路由渲染的应用?
时间: 2024-10-20 20:19:20 浏览: 2
从头开始构建一个基于React 18、Redux和动态路由渲染的应用通常涉及以下几个步骤:
1. **安装依赖**:
- 使用`create-react-app`初始化一个新的React项目:`npx create-react-app my-app`
- 安装必要的库:`npm install react-redux redux react-router-dom`
2. **创建Redux store**:
- 创建`store.js`文件,导入`createStore`和相关的reducer(例如`counterReducer.js`)。
```javascript
import { createStore } from 'redux';
import counterReducer from './counterReducer';
const store = createStore(counterReducer);
export default store;
```
3. **创建reducers**:
- 分离每个业务逻辑到单独的reducer文件,如`counterReducer.js`。
4. **组合使用**:
- 在`App.js`或`src/index.js`中,将store作为provider的prop传递给Provider组件:
```javascript
import { Provider } from 'react-redux';
import store from './store';
import App from './App';
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
```
5. **创建路由**:
- 导入`BrowserRouter`, `Route`, 和 `Switch` :
```javascript
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
```
- 在`App.js`或`src/components`中设置路由配置,比如`<Route path="/" component={Home} />`。
6. **动态路由**:
- 如果需要动态路径,可以使用`useParams` Hook获取查询参数或路劲片段中的值,并在相应组件内处理它们。
7. **页面组件**:
- 创建每个路由对应的组件,例如`Home.js`、`About.js`等,通过props接收store的数据并使用`connect()`函数连接到Redux store。
8. **导航**:
- 使用`react-router-dom`提供的`Link`组件进行导航,或者在状态改变后手动更新`history.push()`。
```javascript
// Home.js 或者 About.js
import { useSelector, useDispatch } from 'react-redux';
import { navigate } from '@reach/router';
function MyComponent() {
const dispatch = useDispatch();
// ...
function handleClick() {
dispatch({ type: 'UPDATE_STATE' });
navigate('/other-route', { state: { someData: 'from this route' } });
}
return (
<button onClick={handleClick}>Go to other route</button>
);
}
```
阅读全文