React開發時候註意點

来源:https://www.cnblogs.com/felearn/archive/2018/08/07/React-kai-fa-shi-hou-zhu-yi-dian.html
-Advertisement-
Play Games

JSX 使用jsx的使用,用一個{}包裹起來,例如 使用()小括弧,防止分號自動插入 如果使用箭頭函數,返回的是一個對象的話,使用()包圍起來 組件數據傳遞 通過props 子組件向父組件傳遞數據 State constructor可以初始化state 取得state的值,通過 this.state ...


JSX

  1. 使用jsx的使用,用一個{}包裹起來,例如

    const method = {<div> 123 </div>}


  2. 使用()小括弧,防止分號自動插入

    const element = 
    (
    
      <h1>
    
        Hello, {formatName(user)}!
    
      </h1>
    
    );
    

      

  3. 如果使用箭頭函數,返回的是一個對象的話,使用()包圍起來

    const element = 
    (
    
      <h1>
    
        Hello, {formatName(user)}!
    
      </h1>
    
    );
    

      

    組件數據傳遞

  4. 通過props

    function Comment(props) {
      return (
    
        <div className="Comment">
    
          <div className="UserInfo">
    
            <Avatar user={props.author} />
    
            <div className="UserInfo-name">
    
              {props.author.name}
    
            </div>
    
          </div>
    
          <div className="Comment-text">
    
            {props.text}
    
          </div>
    
          <div className="Comment-date">
    
            {formatDate(props.date)}
    
          </div>
    
        </div>
    
      );
    
    }
    

      

    這樣的話,就可以通過prop獲得到數據,這個數據是只讀的,不要修改
    
  5. 子組件向父組件傳遞數據

    父:
    bindValue = (e) => { console.log(e)}
    
    <Son onChange = {this.bindValue}>
    
    子:
    
    <input onChange={this.props.onChange}>
    
    這樣的話,子--->父 傳遞便實現了
    

      

    State

  6. constructor可以初始化state

    父:
    bindValue = (e) => { console.log(e)}
    
    <Son onChange = {this.bindValue}>
    
    子:
    
    <input onChange={this.props.onChange}>
    
    這樣的話,子--->父 傳遞便實現了
    

      

  7. 取得state的值,通過 this.state.date

  8. 改變state,通過 this.setState({}),不要忘記裡面要使用{}的方式

  9. 註意事項

    (1)修改方式
    
    // Wrong,頁面不會重新渲染
    this.state.comment = 'Hello';
    
    // Correct
    
    this.setState({comment: 'Hello'});
    (2)更新是非同步的,有時候通過setState設置數據後,列印,輸出的值是不對的
    

      

    綁定函數

    由於this預設是不會綁定到Es6類中的,有幾種方法

  10. constructor中設置

     constructor (props) {
        super(props)
    
        this.handleClick = this.handleClick.bind(this)
    
    }
    

      

  11. 使用箭頭函數

    handClick = () => {this.handClick()}
    不要忘記了後面加入(),得讓函數運行,這樣的話還一傳遞參數,如下:
    
    handClick = (e) => {this.handClick(e)}
    

      

    條件渲染

  12. 控制顯示和隱藏的時候可以使用 &&

    const show = 1
    show === 1 && <div>hello React </div>
    
    這樣就可以控制是否顯示,可以通過一個事件控制show的值

     

  13. 三元表達式

    show ? (<div key='1'> show</div>): (<div key='2'> hidden </div>)
    最後加key,因為頁面在渲染的時候會利用重覆的元素,不是每一個都要重覆渲染,加入key           
    
    就會認為是不同的元素
    

      


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

-Advertisement-
Play Games
更多相關文章
  • 三種迴圈1.while 2.do while 3.for 1.while: 語法結構:while(條件){代碼塊;改變條件} 步驟:1.初始化變數 2.判斷條件 3.執行代碼塊 4.改變初始條件 5.判斷條件 2.do while 語法結構: do{代碼塊}while(條件) 步驟: 1.初始化變數 ...
  • typeof可以檢測數據的類型 typeof返回結果的其實是字元串:可以通過以下測試出來 typeof返回的數據類型有6種: 1.number 數字類型的操作數typeof(123); 2.string 字元串類型的操作數typeof('123'); 3.boolean 布爾值如:typeof(tr ...
  • [在此處輸入文章標題] 1 web web入門 1)web服務軟體作用: 把本地資源共用給外部訪問 2)tomcat伺服器基本操作 : 啟動: %tomcat%/bin/startup.bat 關閉: %tomcat%/bin/shutdown.bat 訪問tomcat主頁: http://loca ...
  • link:基本語法 <link rel="stylesheet" href="路徑"> @import 基本語法 <style> @import url(地址); @import url("地址"); @import “地址”; 三種寫法都可以 </style> 兩種的區別 1.種類,link時HT ...
  • if :基本語法: 1.單分支語句 : if(條件){代碼塊}else{代碼塊} 2.多分支語句 :if(條件){代碼塊} else if(條件){代碼塊}else{代碼塊} * 不要忘記添加else,以提高用戶體驗 switch:基本語法 switch(變數){ case val : 代碼塊; b ...
  • 1、slice、substring、snustr均屬於String的對象方法,用於截取或提取字元串片段,三者均布破壞原先的字元串,而是以新的字元串返回被提取的部分。 2、三者只有兩個參數,但第二個參數均可以省略,表示從起始位置到字元串隨後,slice與substring的第一個參數是字元起始位置,第 ...
  • 浮動佈局 註意點:三個div,left --> right > center 這種順序 Flex 設置中間盒子FLex:1,這樣的話就可以實現自適應,預設水平排列 絕對定位對齊 ...
  • 1 //一.原生js實現ajax請求 2 // 1.get請求 3 var xml=null; 4 if(XMLHttpRequest){ 5 xml=new XMLHttpRequest; 6 }else{ 7 xml=new ActiveXObject('Microsoft.XMLHTTP') ... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...