国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

react 大雜燴

這篇具有很好參考價值的文章主要介紹了react 大雜燴。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

組件

1.是返回標(biāo)簽的js函數(shù),是可重復(fù)利用的UI元素

function test(){
return (

test

);
}

2.構(gòu)建組件:

(1)export 導(dǎo)出組件

(2)定義函數(shù),名稱必須以大寫字母開頭

(3)添加標(biāo)簽

3.具名導(dǎo)出

將test組件從test.tsx導(dǎo)出

import { test } from ‘./test’

4.JSX標(biāo)簽只能返回一個根元素,用父標(biāo)簽包裹

標(biāo)簽必須閉合

駝峰命名

5.JSX與大括號

通過{}使用JS變量

使用場景:jsx內(nèi)的文本,=后的屬性

{{}},包裹的對象

6.props傳遞

Props 反映了組件在任何時間點(diǎn)的數(shù)據(jù)

傳遞:通過jsx

讀取:

function Avatar({ person, size }) {
// 在這里 person 和 size 是可訪問的
}

7.條件渲染

if語句,&&和?:運(yùn)算符選擇性渲染jsx

{cond ? : } 表示 “當(dāng) cond 為真值時, 渲染 ,否則

{cond && } 表示 “當(dāng) cond 為真值時, 渲染 ,否則不進(jìn)行渲染”

8.渲染列表

數(shù)據(jù)存在列表中,通過map()或filter()遍歷,用

  • 包裹并返回

直接放在map()方法中的元素要指定key,一般使用能從給定數(shù)據(jù)中穩(wěn)定取得的值

State和生命周期

useState的唯一參數(shù)是state變量的初始值,state變量保存上次渲染的值,state setter函數(shù)更新state并觸發(fā)react重新渲染組件

state是隔離且組件私有的

state管理部分

沒有在網(wǎng)站上找到生命周期的內(nèi)容

23-06-21

Hook

1.Hooks ——以 use 開頭的函數(shù)——只能在組件或自定義 Hook的最頂層調(diào)用,不能在條件語句、循環(huán)語句或其他嵌套函數(shù)內(nèi)調(diào)用 Hook。

useState

setState是異步的,雖然時間很短,但不足以在上一行代碼設(shè)置,下一行代碼就使用,即state 的值始終”固定“在一次渲染的各個事件處理函數(shù)內(nèi)部。

批處理:React 會等到事件處理函數(shù)中的所有代碼都運(yùn)行完畢再處理 state 更新。這允許更新多個變量,而不會觸發(fā)太多次重新渲染。但也因此只有其他代碼執(zhí)行完畢后,ui才會更新。

如果想在下一次渲染之前多次更新同一個state,可以像setNumber(n => n + 1)傳入更新函數(shù)。

組件的渲染:初次渲染、修改state會觸發(fā)組件渲染

只想更新state中對象的部分屬性,可以使用…對象傳播語法,更新嵌套對象,需要一層層展開

setPerson({
…person, // Copy the old fields
firstName: e.target.value // But override this one
});

更新state中的數(shù)組:

添加元素,concta,[…arr],why?因為state只能通過setstate修改,使用[].push會修改state

刪除元素,filter,slice

替換,map

排序,先用臨時變量拷貝數(shù)組(淺拷貝),排序后再用setState

構(gòu)建state的原則:

合并關(guān)聯(lián)的state

避免互相矛盾的state

避免冗余的state,如果可以使用兩個state表達(dá)第三個state,那就不需要三個state

避免重復(fù)的state

避免深度嵌套的state

狀態(tài)提升:

當(dāng)希望兩個組件的狀態(tài)始終同步更改,可以將相關(guān) state 從這兩個組件上移除,并把 state 放到它們的公共父級,再通過 props 將 state 傳遞給這兩個組件

移除一個組件的時候,也會銷毀它內(nèi)部的state,只有在相同位置渲染同樣的組件,才保留。

可以通過為一個子樹指定一個不同的 key 來重置它的 state。

useContext

Context 使組件向其下方的整個樹提供信息(傳遞多層)

使用場景:

主題,在應(yīng)用頂層放一個 context provider,提供一個統(tǒng)一的主題模式

當(dāng)前賬戶,許多子組件需要當(dāng)前登陸的用戶信息

路由

狀態(tài)管理

創(chuàng)建方法:

通過 export const MyContext = createContext(defaultValue) 創(chuàng)建并導(dǎo)出 context。

在無論層級多深的任何子組件中,把 context 傳遞給 useContext(MyContext) Hook 來讀取它。

在父組件中把 children 包在 <MyContext.Provider value={…}> 中來提供 context。

Context 會穿過中間的任何組件

useRef

使用場景:記住一些信息,但不想讓這些信息觸發(fā)渲染

通過ref.current訪問數(shù)據(jù)

更改時不會觸發(fā)重新渲染,可以在渲染過程之外修改和更新current的值

子組件使用父組件的ref時,直接往子組件傳ref

父組件使用子組件的ref時需要使用forwardRef

23-06-25

useEffect

useEffect(() => {
// This runs after every render
});

useEffect(() => {
// This runs only on mount (when the component appears)
}, []);

useEffect(() => {
// This runs on mount and also if either a or b have changed since the last render
}, [a, b]);

return:一般返回一個清理函數(shù),每次effect再次運(yùn)行之前,react都會調(diào)用這個清理函數(shù),最后一次是在組件卸載(被刪除)時調(diào)用。

effect是由渲染本身引起的,默認(rèn)情況下,effect在初始渲染和每次再次渲染后運(yùn)行。

依賴項為空時,僅在組件掛載時執(zhí)行。

所使用的所有依賴都要寫到依賴項中。

如果Effect 的所有依賴項都具有與上次渲染期間相同的值,React 將跳過 Effect。

在嚴(yán)格模式下,React 會掛載組件兩次(僅在開發(fā)中)來對effect進(jìn)行壓力測試。

什么時候應(yīng)該使用:

1.控制非react的ui部件:某些api不允許連續(xù)調(diào)用兩次,因此在重新渲染前應(yīng)該先關(guān)閉(通過清理函數(shù)),再重新調(diào)用

2.訂閱:訂閱了某些內(nèi)容,每次只能有一個activate的訂閱

3.觸發(fā)動畫:清理函數(shù)中需要把時間軸重置為初始狀態(tài)

4.獲取數(shù)據(jù):通過數(shù)據(jù)請求鏈接獲取數(shù)據(jù),清理函數(shù)中需要中斷數(shù)據(jù)鏈接或忽略之前請求的數(shù)據(jù)結(jié)果

5.發(fā)送analytics

不必要的場景:

1.能夠根據(jù)state或者props來更新state

2.用useMemo換成昂貴的計算結(jié)果

useState

const [state, setState] = useState(initialState);

向組件添加狀態(tài)

set函數(shù)允許將state更新為不同的值并觸發(fā)渲染

提供的新值與當(dāng)前state相同,將skip re-rendering 組件及其子組件

調(diào)用set函數(shù)不會改變運(yùn)行代碼中的狀態(tài)

import React from ‘react’
import {View,Text,Button} from ‘@mrn/react-native’
import {useState} from ‘react’
export function test(){
const [count,setCount]=useState(1);
function handleClick(){
setCount(count+1);
}
return (
<>


function test+{count}



</>);
}

useEffect

將組件與外部系統(tǒng)(不受react控制的代碼)同步

useEffect(setup, dependencies?)

setup:具有效果邏輯的function,dependencies:需要包括在function中使用到的組件中的每個值

return undefined

import { useEffect } from ‘react’;
import { createConnection } from ‘./chat.js’;

function ChatRoom({ roomId }) {
const [serverUrl, setServerUrl] = useState(‘https://localhost:1234’);

useEffect(() => {
const connection = createConnection(serverUrl, roomId);
connection.connect();//連接
return () => {
connection.disconnect();//斷開
};
}, [serverUrl, roomId]);
// …
}

useCallback

在重新渲染之間緩存function定義(?)

const cachedFn = useCallback(fn, dependencies)

fn:要緩存的函數(shù)值,dependencies:fn中涉及到的所有的reactive values

return 傳遞的function

使用:

1.跳過組件的重新渲染:當(dāng)一個組件重新渲染時,React 會遞歸地重新渲染它的所有子組件,通過useCallback包裝的function,可以保證它在重新渲染是相同的function

2.從被memorized的callback(?)中更新state

3.防止Effect過于頻繁地觸發(fā)

4.優(yōu)化自定義Hook

useMemo

在重新渲染之間緩存計算結(jié)果

const cachedValue = useMemo(calculateValue, dependencies)

calculateValue:計算要緩存的值的函數(shù)

初次渲染時,返回不帶參數(shù),下一次渲染期間返回上次渲染中已存儲的值

使用:

1.跳過昂貴的重新計算

2.跳過組件的重新渲染

3.記憶另一個Hook依賴

4.記憶一個function

useRef

引用一個不需要渲染的值

const ref = useRef(initialValue)

initialValue:ref 對象的 current 屬性的初始值??梢允侨我忸愋偷闹?。這個參數(shù)會首次渲染后被忽略。

返回一個只有一個屬性的對象:

current:最開始被設(shè)置為傳遞的 initialValue。之后可以把它設(shè)置為其他值。如果把 ref 對象作為一個 JSX 節(jié)點(diǎn)的 ref 屬性傳遞給 React,React 將為它設(shè)置 current 屬性。

在后續(xù)的渲染中,useRef 將返回同一個對象。

可以修改ref.current的屬性,除了初始化以外不要在渲染期間寫入 或者讀取 ref.current

使用:

1.用ref引用一個值

2.操作DOM

3.避免重復(fù)創(chuàng)建ref的內(nèi)容文章來源地址http://www.zghlxwxcb.cn/news/detail-693538.html

到了這里,關(guān)于react 大雜燴的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 章節(jié) 1:入門React.js -《React.js手把手教程:從初學(xué)者到實戰(zhàn)高手》- 第一部分:React.js基礎(chǔ)

    章節(jié) 1:入門React.js -《React.js手把手教程:從初學(xué)者到實戰(zhàn)高手》- 第一部分:React.js基礎(chǔ)

    《React.js手把手教程:從初學(xué)者到實戰(zhàn)高手》 第一部分:React.js基礎(chǔ) 在我們開始探索 React.js 的奇妙世界之前,讓我們先來認(rèn)識一下這個“ 人人都在談?wù)?”的家伙。你可以把 React.js 想象成是一個全棧工程師的一大碗甜品,不僅好吃,還可以讓你的應(yīng)用更美味!那么,究竟什么

    2024年02月11日
    瀏覽(95)
  • three.js(四):react + three.js

    three.js(四):react + three.js

    繪制多個立方體 1.搭建react+ts 項目 react+ts 的用法可參考此鏈接: https://react-typescript-cheatsheet.netlify.app/docs/basic/setup 2.安裝three依賴 3.安裝路由 react-router-v6 的用法可參考此鏈接:https://juejin.cn/post/7088526716049555492 4.用路由組件包裹APP。 index.tsx 5.構(gòu)建項目頁面 src/view/Basics.tsx src/

    2024年02月11日
    瀏覽(123)
  • 【計網(wǎng)隨筆】計算機(jī)網(wǎng)絡(luò)的名詞縮寫解釋雜燴(更新到30個)

    【計網(wǎng)隨筆】計算機(jī)網(wǎng)絡(luò)的名詞縮寫解釋雜燴(更新到30個)

    OSI(Open Systems Interconnection,開放式系統(tǒng)互聯(lián))是一種參考模型,用于在計算機(jī)或通信系統(tǒng)中定義和描述不同層次的通信功能。該模型將通信過程劃分為七個抽象的層次,從物理層到應(yīng)用層,每個層次執(zhí)行特定的任務(wù),以實現(xiàn)可靠的通信。該模型的目的是為不同的廠商和技術(shù)提

    2024年02月03日
    瀏覽(45)
  • 【每日一題】補(bǔ)檔 CF487B. Strip | 數(shù)據(jù)結(jié)構(gòu)雜燴 -> 單調(diào)隊列 | 困難

    原題鏈接 給定一個長度為 n n n 的數(shù)組,將這個數(shù)組進(jìn)行拆分成若干個連續(xù)子數(shù)組, 使得每個子數(shù)組的最大值減去最小值小于等于 s s s , 且每個子數(shù)組的長度大于等于 l e n len l e n 。 問最少可以拆分成多少個連續(xù)子數(shù)組,如果不可以,則輸出 ? 1 -1 ? 1 1 ≤ n , l e n ≤ 1 0

    2024年02月06日
    瀏覽(21)
  • React.js快速入門教程

    React.js是一個由Facebook開發(fā)的用于構(gòu)建用戶界面的JavaScript庫。它主要用于構(gòu)建單頁面應(yīng)用程序(SPA),可以輕松地創(chuàng)建交互性強(qiáng)、快速響應(yīng)的用戶界面。 React.js的特點(diǎn) 1.聲明式設(shè)計 ?React采用聲明范式,可以輕松描述應(yīng)用。 2.高效 ?React通過對DOM的模擬,最大限度地減少與D

    2024年01月22日
    瀏覽(23)
  • React構(gòu)建的JS優(yōu)化思路

    React構(gòu)建的JS優(yōu)化思路

    之前個人博客搭建時,發(fā)現(xiàn)頁面加載要5s才能完成并顯示 React生成的JS有1.4M,對于個人博客服務(wù)器的帶寬來說,壓力較大,因此耗費(fèi)了5S的時間 解決React生成的JS大小,因為我用的是 react-router-dom 路由模塊,查閱資料發(fā)現(xiàn)可以利用懶加載的機(jī)制,實現(xiàn)JS分割成不同的JS文件 利用

    2024年02月12日
    瀏覽(17)
  • react js自定義實現(xiàn)狀態(tài)管理

    和源碼可能不同,我沒看過源碼,只是實現(xiàn)一下 不足的是,還是需要forceUpdate 實現(xiàn)模塊化

    2024年01月18日
    瀏覽(29)
  • React + jest 測試 hightlight.js 報錯

    React + jest 測試 hightlight.js 報錯

    報錯信息如下:? ? Jest encountered an unexpected token ? ? Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax. 報錯在這行 import \\\'highlight.js/styles/monokai.css\\\' 應(yīng)該是js/css文件沒有轉(zhuǎn)換好, ?處理方式如下:

    2024年02月12日
    瀏覽(21)
  • React 配置別名 @ ( js/ts 項目中通過 webpack.config.js 配置)

    在 Vue 項目當(dāng)中,可以使用? @ ?來表示? src/ ,但在 React 項目中,默認(rèn)卻沒有該功能,因此需要進(jìn)行手動的配置來實現(xiàn)該功能。 別名主要解決的問題:每個頁面都使用路徑的方式進(jìn)行引入,這樣很麻煩,效率很低,這個時候可以配置一個別名,來直接使用別名引入。 使用

    2024年02月09日
    瀏覽(19)
  • 前端框架之爭:Vue.js vs. React.js vs. Angular

    前端框架之爭:Vue.js vs. React.js vs. Angular

    ??歡迎來到Web前端專欄~前端框架之爭:Vue.js vs. React.js vs. Angular ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:架構(gòu)設(shè)計 ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實戰(zhàn)項目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??文章作者技術(shù)和水平有限,如果

    2024年02月07日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包