返回

React + TypeScript + ReduxJS/Toolkit 手敲历史标签页

前端

利用 Redux 在 React 中轻松实现历史标签页功能

在应用程序中实施历史标签页的好处

历史标签页是一个方便的功能,可帮助用户轻松快速地导航到以前访问过的页面。通过存储用户在主页中访问过的路由,历史标签页可以提升用户体验,使其在需要时快速恢复之前的浏览活动。

了解 ReduxJS/Toolkit

ReduxJS/Toolkit 是 Redux 的一个工具包,它简化了 Redux 的使用,提供了一系列内置工具,如 createSlice、createAction 和 createReducer,让创建 Redux store、action 和 reducer 变得轻而易举。

创建 Redux Store

Redux store 是一个全局状态存储库,它保存着应用程序的所有状态。使用 ReduxJS/Toolkit,您可以轻松地创建一个 store:

import { configureStore } from '@reduxjs/toolkit';

const store = configureStore({
  reducer: {},
});

export default store;

创建 Redux Action

Redux action 是应用程序中发生操作的对象。每个 action 必须有一个 type 属性,指定操作的类型,还可以有一个 payload 属性,包含与操作相关的数据:

const addHistoryTabAction = createAction<string>('ADD_HISTORY_TAB');

创建 Redux Reducer

Redux reducer 是一个处理 Redux action 并更新 Redux store 中状态的函数。它必须是一个纯函数,只根据 Redux action 和 Redux store 中的当前状态计算新的状态:

const historyTabReducer = createReducer([], {
  [addHistoryTabAction.type]: (state, action) => {
    return [...state, action.payload];
  },
});

在 React 中使用 Redux 存储历史标签页

在 React 中使用 Redux 存储历史标签页,请按照以下步骤进行:

  1. 在 React 组件中导入 Redux store 和 Redux action。
  2. 在 React 组件中订阅 Redux store 中的历史标签页状态。
  3. 当用户点击某个菜单项或历史标签项时,分发 Redux action 将对应的路由添加到历史标签页状态中。
import React, { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { addHistoryTabAction } from './redux/actions';

const HistoryTab = () => {
  const dispatch = useDispatch();
  const historyTabs = useSelector((state) => state.historyTabs);

  useEffect(() => {
    dispatch(addHistoryTabAction('/home'));
  }, []);

  return (
    <ul>
      {historyTabs.map((tab) => (
        <li key={tab}>{tab}</li>
      ))}
    </ul>
  );
};

export default HistoryTab;

总结

通过将历史标签页状态存储在 Redux store 中,我们可以在应用程序的任何组件中轻松访问和更新该状态,从而可以轻松地将历史标签页功能集成到应用程序中。

常见问题解答

1. 为什么使用 Redux 存储历史标签页?
Redux 提供了一个全局状态存储库,允许您在应用程序的不同组件之间共享和管理历史标签页状态。

2. ReduxJS/Toolkit 的好处是什么?
ReduxJS/Toolkit 简化了 Redux 的使用,提供了一些内置工具,可以轻松创建 Redux store、action 和 reducer。

3. 如何在 React 中订阅 Redux store?
使用 useSelector() 钩子可以订阅 Redux store 中的状态变化。

4. 如何在 React 中分发 Redux action?
使用 useDispatch() 钩子可以分发 Redux action。

5. Redux reducer 必须遵循哪些原则?
Redux reducer 必须是纯函数,这意味着它只能根据 Redux action 和 Redux store 中的当前状态来计算新的状态。