react-項目結構

来源:https://www.cnblogs.com/Ryan-DHQ/archive/2022/10/20/16811135.html
-Advertisement-
Play Games

react環境搭建 1.安裝安裝nodejs()。 2.安裝npm或者yarn或cnpm()。 3.安裝react腳手架create-react-app: npm install -g create-react-app 或 cnpm install -g create-react-app 或 yar ...


react環境搭建

1.安裝安裝nodejs()。

2.安裝npm或者yarn或cnpm()。

3.安裝react腳手架create-react-app

npm install -g create-react-app
或  cnpm install -g create-react-app
或  yarn add -g create-react-app

react創建項目

create-react-app  myReact(項目名,註意大小寫)   
cd myReact   
npm start  或 yarn start

react項目結構

┌── public // 公共資源文件
│ ├── favicon.ico // 是瀏覽器tab上圖標,也是這個項目的一個標誌,也可以說是代表一個公司的標誌。可以替換。
│ ├── index.html // 主文件
│ └── manifest.json // 編譯配置文件

├── node_modules // 項目依賴包文件夾
├── src // 我們的項目的源碼編寫文件(裡面的文件可根據喜好,隨意更改)
│ ├── component // 組件文件,存放所有的組件
│ │ └── PageHome // 組件文件夾(每個組件都有自己的css和js文件或者圖片等,所以每個組件都創建一個文件夾,習慣首字母大寫)
│ │ ├── index.js // 組件文件夾
│ │ └── index.css // 組件文件夾
│ ├── App.js // 入口組件,其他組件會被包裹此組件中,此組件通過index.js再插入 index.html 文件里,形成單頁面應用;
│ ├── index.js // 存放的是這個項目的核心內容,也就是我們的主要工作區域。其中,index.js文件是和index.html進行關聯的文件的唯一介面,類似vue裡面的main.js。
│ └── serviceWorker.js //
├── package-lock.json // npm5 新增文件,優化性能
├── package.json // 項目依賴包配置文件(node配置文件)
└── README.md // 項目說明文檔

react項目準備

下載相關插件

npm insatll classnames --save    // 樣式類名插件

 

react項目實現對table表格的渲染(增刪改)

react之index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

// TableBase 是定義的一個組件
import TableBase from './table';

//獲取節點元素
const root = ReactDOM.createRoot(document.getElementById('root'));
// 用ReactDOM.render來將元素渲染到頁面中
root.render(
  <React.StrictMode>
    <TableBase />
  </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
//測試
reportWebVitals(console.log("123"));

 

在src目錄下麵創建table.js

理解並使用react的useState
1、為什麼有了這個方法
useState()是專門用在函數組件中的,因為函數組件本來是沒有狀態的組件,而類組件中可以通過 this.state和this.setState來更新組件狀態,於是 React 16.8 就新增useState這個特性,用來提升函數組件的性能。

/* eslint-disable no-unused-vars */
//導入樣式和組件
import './table.css'
import { useState } from 'react'
import React from 'react'

//導出創建的函數
export default function TableBase() {


  //定義數據
  // 聲明一個叫 "products" 的 state 變數
  const [products, setProduct] = useState([{
    title: 'paint pot',
    quantity: 9,
    price: 3.95
  }, {
    title: 'polka dots',
    quantity: 17,
    price: 12.3
  }, {
    title: 'pebbles',
    quantity: 5,
    price: 6.71
  }, {
    title: 'Mi Note5',
    quantity: 8,
    price: 2985.6
  }, {
    title: 'iPhone XS',
    quantity: 10,
    price: 8906.72
  }]);


  //求價錢總和
  const sum = function () {
    let sum1 = 0;
    products.forEach(item => {
      sum1 += (item.price * item.quantity);
    });
    return sum1;
  }


  //格式化價格
  const formatPrice = function (value, n) {
    return "¥" + value.toFixed(n);
  }


  //實現雙向綁定
  const [inputValue, setInputValue] = useState('');

  //移除
  const clickShow = (index) => {
    var newList = [...products];
    newList.splice(index, 1);
    setProduct(newList);
  }

  //加
  const plus = (product, index) => {
    var newList = [...products];
    product.quantity++;
    newList.splice(index, 1, product);
    setProduct(newList)
  }

  //減
  const reduce = (product, index) => {
    var newList = [...products];
    if (product.quantity <=1) {
      newList.splice(index, 1);
      setProduct(newList);
    } else {
      product.quantity--;
      newList.splice(index, 1, product);
      setProduct(newList)
    }
  }


  return (
    <table className="cartTable">
      <thead>
        <tr>
          <th>序號</th>
          <th>名稱 </th>
          <th>單價</th>
          <th>數量</th>
          <th>小計</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        {products.map((item, index) => (
          <tr key={index} className={index % 2 === 0 ? "bg" : null} >
            <td>{index + 1}</td>
            <td>{item.title}</td>
            <td>{formatPrice(item.price, 2)}</td>
            <td>
              <button onClick={() => plus(item, index)}>+</button>
              <input type="text" value={item.quantity} onChange={e => {
                setInputValue(e.target.value);
              }}></input>
              <button onClick={() => reduce(item, index)}>-</button>
            </td>
            <td>{formatPrice(item.price * item.quantity, 2)}</td>
            <td>
              <button onClick={() => clickShow(index)}>移除</button>

</td> </tr> ) )} </tbody> <tfoot> <tr> <td colSpan="6"> {formatPrice(sum(), 2)} </td> </tr> </tfoot> </table> ) }

 

在src目錄下麵創建table.css

.cartTable{
    width: 100%;
    border: 2px solid #666;
    border-collapse: collapse;
}
.cartTable th{
    background: pink;
    position: relative;
    height: 30px;
   
}

.cartTable tr{
    text-align: center;
}

.cartTable th .top-img{
    position: absolute;
    top: 0px;
    width: 20px;
}

.cartTable th .bottom-img{
    position: absolute;
    bottom: 0px;
    width: 20px;
}
.cartTable th,.cartTable td{
    border: 2px solid #666;
    border-collapse: collapse;
}
tfoot tr td{
    text-align: right;
    padding: 10px;
    font-size: 18px;
    font-weight: bold;
    color: red;
}
.bg{
    background: #def;
}

運行的效果圖:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 某能源企業成立於2008年,是成品油銷售領域的龍頭企業(以下簡稱“A企業”),由中外合資設立。A企業立足於陝西省及周邊地區,重點開展加油站運營管理及相關業務。目前在陝西、山西、河南、內蒙古自治區運營油站超過600座,會員超過600萬,每天為超過22萬名顧客提供高品質的燃油服務。 ...
  • where 子句,通常用於在找尋數據的時候做一個條件篩選,得到滿足條件的記錄行數; 註意:新增(insert)不能做篩選; where 子句中常見的運算符有如下幾種: 1. 比較運算符:> >= < <= != = 2. 算術運算符:+ - * / 3. 邏輯運算符:&(邏輯與——語法:and);| ...
  • 定義:select語句中嵌套select語句,被嵌套的select語句是子查詢。 子查詢可以出現在: select ....(select).. from ....(select).. where ....(select).. 1.where後面嵌套子查詢 select * from emp whe ...
  • 2008年,《鬥羅大陸》正式發行,成為了風靡一時的長篇玄幻小說。小說講述了穿越到鬥羅大陸的唐三如何一步步修煉武魂,由人修煉為神,最終鏟除了邪惡力量,成為了鬥羅大陸最強者的故事。此後數十年,《鬥羅大陸》成為了一代人心目中珍貴的記憶。每個鬥羅迷藉由小說想象了一個屬於自己的鬥羅大陸,可以在裡面組隊修真、盡 ...
  • 全民買量時代,新服和新區持續增開,對玩家長線留存及付費提升顯得尤為重要。在分析游戲活動效果和玩家營運數據時,相信大家都曾有過這樣的疑問: 不同區服玩家的表現如何對比分析? 怎樣合理評估新開區服對玩家迴流的持續吸引力? 高性價比的新服激勵是否有效提升了ARPU? … HMS Core分析服務全新上線6 ...
  • 下麵是我自己寫的一個功能,先分析下思路: 效果使用@keyframes幀動畫,屬性使用opacity和transform motto是有限的,而漂浮是無限的,需要迴圈有限的motto不斷創建新的漂浮 用一個pool來容納漂浮,在無操作的時候清空pool 本來是隨便寫寫的,但是改著改著...怎麼看起來 ...
  • 每日演算法 今日是: 1、將字元串轉換為駝峰格式 2、判斷字元串中是否有連續重覆的字元 將字元串轉換成駝峰格式 // css 中經常有類似 background-image 這種通過 - 連接的字元,通過 javascript 設置樣式的時候需要將這種樣式轉換成 backgroundImage 駝峰格 ...
  • 先說些廢話 最近在開發React技術棧的項目產品,對於數據狀態的管理使用了Dva.js,作為一個資深的ow玩家,我看到這個名字第一反應就是————這不是ow里的一個女英雄嗎?仔細閱讀了官方文檔之後,發現開發者還真是因為這個角色獲得靈感,來命名這個數據狀態管理插件,果然開發大佬都是工作和休閑兩不誤~ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...