從零開始創建React項目及制作頁面

一、React 介紹

React 是一個由 Meta(原Facebook) 開發和維護的 開源JavaScript庫,主要用于構建用戶界面(User Interface, UI)。它是前端開發中最流行的工具之一,廣泛應用于單頁應用程序(SPA)和移動端應用開發中。

1. React 核心特點

a. 組件化開發

????????React 的 UI 是由一個個小的、可復用的組件構成的,組件可以像積木一樣組合在一起,構建出復雜的用戶界面。

b. 聲明式編程

????????React 使用聲明式的方式描述 UI。開發者只需要定義組件在不同狀態下的樣子,React 會自動更新和渲染界面。

c. 虛擬DOM

????????React 使用虛擬DOM(Virtual DOM)來提升性能。當狀態發生變化時,React 會先更新虛擬DOM,然后計算出最小的變更,再將變更應用到真實DOM中。

d. 單向數據流

????????數據在React中是單向流動的(從父組件流向子組件),這使得數據管理更加清晰和可靠。

e. JSX語法

????????React 提供了一種類似HTML的語法擴展——JSX,允許開發者在JavaScript中直接編寫HTML結構。

2. React 的生態系統

a. React Router:用于處理路由。

b. Redux 或 Context API:用于狀態管理。

c. Next.js:基于 React 的服務端渲染(SSR)框架。

d. React Native:用于開發跨平臺的移動端應用。

3. React 的優點

a. 高效:通過虛擬DOM優化性能。

b. 靈活:支持與其他庫或框架結合使用。

c. 可維護性高:組件化開發使代碼結構清晰、易于維護。

d. 社區強大:豐富的社區資源和第三方庫支持。

二、開發環境

1.?Node.js 和 npm

  • 下載并安裝?Node.js(包含 npm)。
  • 驗證安裝是否成功
    node -v
    npm -v
    

2. 代碼編輯器

  • ?推薦使用?Visual Studio Code。

?二、創建 React 項目

最簡單的方式是使用官方工具 Create React App

1. 創建步驟

  • 打開終端或命令行工具,進入你想創建項目的目錄
  • 運行以下命令
npx create-react-app my-app

  • 等待安裝完成后,進入項目目錄
cd my-app
  • 啟動開發服務器
npm start
  • 瀏覽器會自動打開?http://localhost:3000,顯示 React 的默認頁面

2. 文件結構說明

my-app/
├── node_modules/       # 項目依賴目錄
├── public/             # 靜態資源目錄
│   ├── favicon.ico     # 瀏覽器標簽圖標
│   ├── index.html      # 主 HTML 文件,React 掛載到此文件
│   ├── logo192.png     # 默認 logo 圖片 (192x192)
│   ├── logo512.png     # 默認 logo 圖片 (512x512)
│   ├── manifest.json   # PWA 配置文件
│   └── robots.txt      # 搜索引擎爬蟲配置
├── src/                # 源代碼目錄
│   ├── App.css         # App 組件的樣式文件
│   ├── App.js          # 主組件文件
│   ├── App.test.js     # App 組件的測試文件
│   ├── index.css       # 全局樣式文件
│   ├── index.js        # 應用程序的入口文件
│   ├── logo.svg        # 默認 logo 文件 (SVG 格式)
│   ├── reportWebVitals.js # 性能監控文件
│   └── setupTests.js   # 測試環境的配置文件
├── .gitignore          # Git 忽略規則
├── package-lock.json   # 鎖定依賴版本的文件
├── package.json        # 項目配置文件
└── README.md           # 項目說明文檔

三、創建一個React頁面

以下是詳細的教程,包括如何創建頁面組件、路由配置以及頁面樣式等

創建 React 頁面步驟

1. 創建頁面組件

React 中的頁面通常是一個獨立的組件。你可以在 src 目錄下新建一個文件夾(如 pages),用于存放所有頁面組件。

  • 在?src?目錄下創建一個?pages?文件夾。
  • 在?pages?文件夾中創建一個新的頁面組件文件,例如?MyPage.js

示例代碼:

import React from 'react';
import './MyPage.css'; // 引入樣式文件(可選)const MyPage = () => {return (<div className="my-page"><h1>歡迎來到我的頁面</h1><p>這是一個屬于自己的頁面!</p></div>);
};export default MyPage;

2. 創建樣式文件

為頁面組件添加樣式文件,讓頁面更美觀。

  • 在?pages?文件夾中創建一個樣式文件,例如?MyPage.css。

示例代碼:

.my-page {text-align: center;background-color: #f0f8ff;padding: 20px;color: #333;
}.my-page h1 {font-size: 2rem;color: #007bff;
}.my-page p {font-size: 1.2rem;margin-top: 10px;
}

3.設置路由

在 React 中,路由是由 react-router-dom 提供的。你需要安裝路由庫并配置路由規則。

  • 確保安裝了 react-router-dom
    npm install react-router-dom
    
  • src 目錄下的 App.js 中配置路由.

示例代碼:

import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import MyPage from './pages/MyPage'; // 引入新頁面
import Home from './Home'; // 假設有一個主頁組件const App = () => {return (<Router><Routes><Route path="/" element={<Home />} /> {/* 主頁 */}<Route path="/my-page" element={<MyPage />} /> {/* 新頁面 */}</Routes></Router>);
};export default App;

4. 啟動項目并訪問頁面

  • 啟動開發服務器
npm start
  • 在瀏覽器中訪問新頁面

主頁:http://localhost:3000/

新頁面:http://localhost:3000/my-page

5. 可選功能

為了更方便地切換頁面,可以添加一個導航欄

代碼示例:添加導航欄,在src下創建 Navbar.js

import React from 'react';
import { Link } from 'react-router-dom';const Navbar = () => {return (<nav style={{ padding: '10px', backgroundColor: '#007bff', color: '#fff' }}><Link to="/" style={{ margin: '0 10px', color: '#fff', textDecoration: 'none' }}>主頁</Link><Link to="/my-page" style={{ margin: '0 10px', color: '#fff', textDecoration: 'none' }}>我的頁面</Link></nav>);
};export default Navbar;

修改?App.js:

將導航欄添加到頁面中

import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Navbar from './Navbar'; // 導航欄組件
import MyPage from './pages/MyPage';
import Home from './Home';const App = () => {return (<Router><Navbar /> {/* 導航欄 */}<Routes><Route path="/" element={<Home />} /><Route path="/my-page" element={<MyPage />} /></Routes></Router>);
};export default App;

代碼結構:

src/
├── pages/
│   ├── MyPage.js       # 新頁面組件
│   └── MyPage.css      # 新頁面樣式
├── App.js              # 路由配置
├── Navbar.js           # 導航欄組件
├── Home.js             # 主頁組件(示例)
└── index.js            # 應用入口

6. 打開頁面

至此,可以成功創建屬于自己的React頁面。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906322.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906322.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【前端部署】通過 Nginx 讓局域網用戶訪問你的純前端應用

在日常前端開發中&#xff0c;我們常常需要快速將本地的應用展示給局域網內的同事或測試人員&#xff0c;而傳統的共享方式往往效率不高。本文將指導你輕松地將你的純前端應用&#xff08;無論是 Vue, React, Angular 或原生項目&#xff09;部署到本地&#xff0c;并配置局域網…

【Python裝飾器深潛】從語法糖到元編程的藝術

目錄 ?? 前言??? 技術背景與價值?? 當前技術痛點??? 解決方案概述?? 目標讀者說明?? 一、技術原理剖析?? 核心概念圖解?? 核心作用講解?? 關鍵技術模塊說明?? 技術選型對比??? 二、實戰演示?? 環境配置要求?? 核心代碼實現案例1:基礎計時裝飾器案…

mbed驅動st7789屏幕-硬件選擇及連接(1)

目錄 1.整體介紹 2. 硬件選擇 2.1 mbed L432KC 2.2 ST7789 240*240 1.3寸 3. mbed與st7789的硬件連接 4. 總結 1.整體介紹 我們在使用單片機做一些項目的時候,交互性是最重要的因素。那么對于使用者而言,交互最直接的體現無非就是視覺感知,那么我們希望將項目通過視覺…

SpringBoot集成Jasypt對數據庫連接密碼進行加密、解密

引入依賴 <!--配置密碼加密--><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency><plugin><groupId>c…

分類器引導的條件生成模型

分類器引導的條件生成模型 分類器引導的條件生成模型1. **基本概念**2. **核心思想**3. **實現步驟&#xff08;以擴散模型為例&#xff09;**4. **優點**5. **挑戰與注意事項**6. **應用場景**7. **數學推導**總結 分類器引導的條件生成模型 分類器引導的條件生成模型是一種通…

WPF中的ObjectDataProvider:用于數據綁定的數據源之一

ObjectDataProvider是WPF(Windows Presentation Foundation)中一種強大而靈活的數據綁定源&#xff0c;它允許我們將對象實例、方法結果甚至是構造函數的返回值用作數據源。通過本文&#xff0c;我將深入探討ObjectDataProvider的工作原理、使用場景以及如何在實際應用中發揮其…

lasticsearch 報錯 Document contains at least one immense term 的解決方案

一、問題背景 在使用 Elasticsearch 存儲較大字段數據時&#xff0c;出現如下異常&#xff1a; ElasticsearchStatusException: Elasticsearch exception [typeillegal_argument_exception, reasonDocument contains at least one immense term in field"fieldZgbpka"…

[目標檢測] YOLO系列算法講解

前言 目標檢測就是做到給模型輸入一張圖片或者視頻&#xff0c;模型可以迅速判斷出視頻和圖片里面感興趣的目標所有的位置和它 的類別&#xff0c;而當前最熱門的目標檢測的模型也就是YOLO系列了。 YOLO系列的模型的提出&#xff0c;是為了解決當時目標檢測的模型幀率太低而提…

服務器操作系統時間同步失敗的原因及修復

服務器操作系統時間同步失敗可能導致日志記錄不準確、安全證書失效等問題。以下是常見原因及對應的修復方法&#xff1a; ### 一、時間同步失敗的常見原因 1. **網絡連接問題** - NTP服務器無法訪問&#xff08;防火墻阻止、網絡中斷&#xff09; - DNS解析失敗或網…

Cribl 中function 使用過濾的特殊case:Parser + rename

Cribl 利用function 對parser 進行特殊過濾處理: Parser Function – Fields Filter Expression? When you use the Stream Parser Functions Reserialize option, there is a special option that becomes available, called the Fields Filter Expression. This is basica…

inverse-design-of-grating-coupler-3d

一、設計和優化3D光柵耦合器 1.1 代碼講解 通過預定義的環形間距參數(distances數組),在FDTD中生成橢圓光柵結構,并通過用戶交互確認幾何正確性后,可進一步執行參數掃描優化。 # os:用于操作系統相關功能(如文件路徑操作) import os import sys# lumapi:Lumerical 的…

TuyaOpen橫空出世!涂鴉智能如何用開源框架重構AIoT開發范式?

??「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 一、引子:AIoT開發的“不可能三角”被打破 當AI與物理世界深度融合的浪潮席卷全球,開發者們卻始終面臨一個“不可能三角”——開發效率、技術深度與商業化落地難以兼得。 …

智慧賦能光伏運維——無人機巡檢+地面監控雙鏈路覆蓋,打造光伏電站管理新標桿

一、引言&#xff1a;光伏電站運維的挑戰與機遇 在全球能源轉型浪潮下&#xff0c;光伏電站作為清潔能源的重要載體&#xff0c;其高效運維管理成為行業核心命題。然而&#xff0c;傳統光伏電站運維存在覆蓋范圍廣、設備分散、人工巡檢效率低、故障響應慢等痛點。為破解這一難…

前端無感登錄刷新

前端實現無感登錄 在現代的前端開發中&#xff0c;用戶體驗是非常重要的一環。無感登錄&#xff08;也叫自動登錄&#xff09;就是其中一個提升用戶體驗的關鍵功能。它的目標是讓用戶在登錄后&#xff0c;即使關閉瀏覽器或長時間不操作&#xff0c;也能在下次訪問時自動登錄&a…

JAVASE查漏補缺

這段時間學習了很多知識&#xff0c;好多還有疑問不清楚的地方。今天有空總結一下。 javame,javase,javaee 一、Java ME&#xff08;Micro Edition&#xff0c;微型版&#xff09; Java ME是一種適用于移動設備和嵌入式系統的小型Java平臺&#xff0c;具有高度可移植性和跨平…

【設計模式】基于 Java 語言實現工廠模式

目錄 一、簡單工廠模式 1.1 簡單工廠模式的介紹 二、工廠方法模式 2.1 工廠方法模式的介紹 2.2 工廠方法模式的基本實現 2.3 工廠方法模式的應用場景 三、抽象工廠 3.1 抽象工廠的概念 3.2 抽象工廠的基本結構 3.3 抽象工廠的基本實現 3.4 抽象工廠的應用場景 四、…

OpenCV CUDA模塊中的矩陣算術運算------創建卷積操作對象的工廠方法 cv::cuda::createConvolution

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 createConvolution函數是OpenCV CUDA 模塊中用于創建卷積操作對象的工廠方法。它返回一個指向 cv::cuda::Convolution 接口的智能指針&#xff0…

IDEA:程序編譯報錯:java: Compilation failed: internal java compiler error

目錄 簡介異常信息排查原因解決 簡介 代碼無法編譯、無法打包 異常信息 java: Compilation failed: internal java compiler error排查 1、代碼近期沒有改動過&#xff0c;原先是可以正常編譯的 2、查看程序JDK&#xff0c;是JDK1.8沒錯&#xff0c;與原先JDK一致 3、出現…

windows 10 做服務器 其他電腦無法訪問,怎么回事?

一般我們會先打開win10自己的防火墻策略&#xff0c;但是容易忽略 電腦之間 路由器上的防火墻&#xff0c;此時也需要查看一下&#xff0c;可以嘗試先關閉路由器防火墻&#xff0c;如果可以了&#xff0c;再 設置路由器上的防火墻規則。 將路由器的上網設置 改成 路由模式 &a…

【人工智能-agent】--Dify+Mysql+Echarts搭建了一個能“聽懂”人話的數據可視化助手!

Echarts官網&#xff1a;https://echarts.apache.org/zh/index.html ECharts 是一個由百度團隊開發的、基于 JavaScript 的開源可視化圖表庫&#xff0c;它提供了豐富的圖表類型和強大的交互功能&#xff0c;能夠幫助開發者輕松創建專業級的數據可視化應用。 核心特點 豐富的圖…