从零开始,手把手教你打造一个完整的 React SPA

阅读时长 7 分钟读完

React 是一款由 Facebook 开发的开源 JavaScript 库,常用于开发用户交互界面。它采用了组件化的开发方式,使得开发人员能够更加高效地管理和重用 UI 组件。

在本文中,我们将手把手地教你打造一个完整的 React 单页应用(SPA)。我们将会从如何创建一个 React 项目,到如何搭建路由和处理 API 请求,一步步讲解。

建立基础

首先,我们需要创建一个新的 React 项目。我们可以通过在终端中运行以下命令来创建基于 Create React App 的项目:

接下来,我们可以使用以下命令在项目中安装一些必要的依赖:

  • react-router-dom 是一个常用的 React 路由库,可以帮助我们处理单页应用的 URL 路由。
  • axios 是一个流行的 HTTP 请求库,我们将使用它来处理 API 请求。

搭建基础路由

我们先来创建一个简单的路由,用于将用户导航到我们的应用程序的不同部分。我们将在 src 目录下创建一个名为 Router.js 的新文件,并将以下代码添加到文件中:

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

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

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

------ ------- -------
展开代码

我们使用 React Router 中的 BrowserRouter 组件来处理 URL 路由。在这个组件中,我们包含了一个 Switch 组件,它帮助我们匹配正确的路由。我们还定义了三个 Route 组件:

  • / 路由将会显示 Home 组件。
  • /about 路由将会显示 About 组件。
  • 如果路由没有匹配任何一个已定义的 Route,则将显示 NotFound 组件。

接下来,我们将创建每个页面的组件。

构建页面

src 目录下,我们将创建一个新目录 pages,用于存放我们的页面组件。我们将创建三个组件:Home.jsAbout.jsNotFound.js

我们将在 Home.js 组件中添加一些简单的代码来展示如何使用 React:

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

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

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

------ ------- -----
展开代码

在这个组件中,我们使用 useState 钩子来创建一个状态,用于记录一个按钮被点击的次数。当我们的组件渲染时,我们会展示这个计数器。

我们将用类似的方式来创建 About.jsNotFound.js 组件。About.js 组件将包含一些简单的页面文本,而 NotFound.js 组件将告诉用户他们访问的页面不存在。

处理 API 请求

现在我们已经有了一个基本的页面架构,接下来我们将学习如何处理 API 请求并将数据显示在页面上。

我们将定义一个新的组件 Posts.js,用于获取和显示来自我们的 API 的帖子。要实现这一点,我们将使用 Axios 库来获取数据,并将数据显示在列表中。

首先,我们需要创建一个 Posts.js 组件,然后使用 useEffect 钩子来获取我们的数据:

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

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

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

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

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

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

------ ------- ------
展开代码

在这个组件中,我们定义了两个状态:loadingposts。在渲染组件时,我们使用 useEffect 钩子来获取我们的数据。一旦我们获取到数据,我们将设置这个状态并将 loading 设置为 false

在渲染页面时,我们通过 map 函数将每个帖子显示为列表中的一个项目。

现在我们已经定义了 Posts 组件,我们需要在我们的路由中添加一个新的路径来显示它。我们将添加一个新的路由(/posts),并将 Posts 组件作为我们匹配到的 Route 的组件。

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

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

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

------ ------- -------
展开代码

现在我们的应用程序已经有了一个基本的页面结构,并且可以处理来自我们的 API 的数据。在此基础上,我们可以添加各种功能来改进我们的应用程序,例如用户身份验证、输入验证和优化性能等等。

总之,React 是一款极其强大,可扩展和高效的 JavaScript 库。使用它,我们可以快速构建现代用户界面和交互式单页应用程序。花些时间学习和探索它的各种功能,你会发现它可以大大提高你的生产力和开发效率。

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

纠错
反馈

纠错反馈