React+Redux+TypeScript 项目实战

阅读时长 8 分钟读完

简介

本文将介绍使用 React、Redux 和 TypeScript 开发 Web 项目的实战经验。React 和 Redux 是目前最流行的前端框架之一,而 TypeScript 是 JavaScript 的超集,提供了严格的类型检查和更好的 IDE 支持,能够提高代码的质量和开发效率。通过使用这些技术,我们可以开发出可扩展、可维护、高性能的 Web 应用程序。

技术栈

  • React:用于视图层的构建
  • Redux:用于状态管理
  • TypeScript:用于提供类型检查和更好的 IDE 支持
  • Webpack:用于打包和构建
  • Babel:用于将 TypeScript 转换为 JavaScript
  • Jest:用于单元测试
  • Enzyme:用于 React 组件测试

项目结构

我们将使用以下的目录结构:

-- -------------------- ---- -------
--- ---
-   --- ----------
-   --- ----------
-   --- ------
-   --- --------
-   --- -----
-   --- -----
-   --- ---------
-   --- ----- -----------
--- -----
--- ------
--- -----------------
--- -------------
--- --------
--- ------------
  • src 目录包含源代码。
  • components 目录包含所有的 React 组件。
  • containers 目录包含连接 Redux store 的容器组件。
  • models 目录包含数据模型。
  • services 目录包含所有用于与外部服务交互的代码。
  • store 目录包含 Redux store 的配置和 reducer。
  • utils 目录包含一些常用的工具函数和常量。
  • index.tsx 是主入口文件。
  • tests 目录包含所有的测试代码。
  • public 目录包含静态页面和资源文件。
  • webpack.config.js 是 Webpack 的配置文件。
  • tsconfig.json 是 TypeScript 的配置文件。
  • .babelrc 是 Babel 的配置文件。
  • package.json 是项目的依赖和脚本配置文件。

Redux store 设计

我们可以根据业务需求来设计 Redux store,以下是一个简单的示例:

-- -------------------- ---- -------
-
  ------ -
    -
      --- --
      ----- ---- ------
      ---------- ------
    --
    -
      --- --
      ----- ----- --- --- -------
      ---------- -----
    --
    -- ---
  --
  ----------------- -----------
-
  • todos 数组保存所有的待办事项。
  • visibilityFilter 保存过滤条件。

创建 React 组件

我们可以使用函数式组件或类组件来创建 React 组件。以下是一个简单的函数式组件示例:

-- -------------------- ---- -------
------ - -- ----- ---- --------

--------- ----- -
  -------- -------
-

----- ------------ --------------- - -- ------- -- -- -
  -----
    ---------
  ------
--

------ ------- ------------

我们使用 React.FC<Props> 声明此组件的类型,其中 Props 是接收的属性的类型。

创建 Redux store

我们可以使用 reduxredux-thunk 库创建 Redux store,其中 redux-thunk 用于处理异步操作。以下是一个简单的示例:

-- -------------------- ---- -------
------ - ------------ --------------- - ---- --------
------ --------------- ---- --------------
------ ----------- ---- -------------

----- ----- - ------------
  ------------
  --------------------------------
--

------ ------- ------

连接 Redux store 和 React 组件

我们可以使用 react-redux 库将 Redux store 连接到 React 组件中。以下是一个简单的示例:

-- -------------------- ---- -------
------ - ------- - ---- --------------
------ - ------------------ - ---- --------
------ - -- ------- ---- -------------
------ ----------- ---- ----------------

----- --------------- - ------- --------- -- --
  -------- --------------
---

----- ------------------ - ---------- --------- --
  --------------------------- ----------

------ ------- ------------------------ ---------------------------------

mapStateToProps 用于将 Redux store 的状态映射到组件的属性上,mapDispatchToProps 用于将 action 创建函数映射到组件的属性上。

编写测试

我们可以使用 jestenzyme 库编写测试。以下是一个简单的示例:

-- -------------------- ---- -------
------ - -- ----- ---- --------
------ - ------- - ---- ---------
------ ----------- ---- ----------------

----------------------- -- -- -
  ----------- ------- ----------- -- -- -
    ----- ------- - -------------------- -------------- ------ ----
    ------------------------------ ----------------------
  ---
---

配置 Webpack

我们可以使用以下 Webpack 配置来构建和打包我们的代码:

-- -------------------- ---- -------
----- ---- - ----------------

-------------- - -
  ------ -
    ------------------
  --
  ------- -
    ----- ----------------------- --------
    --------- ------------
  --
  ------- -
    ------ -
      -
        ----- ----------
        ---- -
          -
            ------- ---------------
            -------- -
              -------- -
                --------------------
                ----------------------
                ---------------------------
              --
              -------- -
                --------------------------------------
                ------------------------------------------
                ----------------------------------
              --
            --
          --
        --
        -------- ---------------
      --
    --
  --
  -------- -
    ----------- ------- ------- ------ --------
  --
--

其中 entry 指定主入口文件,output 指定构建后的输出路径和文件名,module 中的 rules 指定各种文件类型的加载方式,resolve 中的 extensions 指定扩展名的解析顺序。

TypeScript 配置

我们可以使用以下 TypeScript 配置来提供类型检查:

-- -------------------- ---- -------
-
  ------------------ -
    --------- ------
    --------- ---------
    ------ ------- --------------- ----------
    ------ --------
    --------- -----
    ------------------------------- ------
    ------------------ ----
  --
  ---------- --------------- ----------------
  ---------- ----------------
-

其中 compilerOptions 指定编译选项,include 指定要编译的文件路径,exclude 指定排除的文件路径。

总结

通过本文的介绍,我们了解了如何使用 React、Redux 和 TypeScript 来构建可扩展、可维护、高性能的 Web 应用程序。我们介绍了 Redux store 设计、React 组件创建、Redux store 和 React 组件连接、测试编写、Webpack 配置和 TypeScript 配置等方面的技术和经验。希望这些内容能对你的学习和项目开发有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a920fe48841e989456b770

纠错
反馈