国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

react hooks 全面轉(zhuǎn)換攻略(一) react本篇之useState,useEffect

KnewOne / 3259人閱讀

摘要:經(jīng)典案例此例子中是最新的語(yǔ)法其中是他的值是用來設(shè)置值的函數(shù)是初始值該初始值可以接受任何參數(shù)但是記得當(dāng)他接受為一個(gè)函數(shù)時(shí)就變成了延遲初始化該函數(shù)返回值即為這兩種初始化方式是相等的但是在函數(shù)為初始值時(shí)會(huì)被執(zhí)行一次這里只會(huì)在初始化的時(shí)候執(zhí)行中的

useState

經(jīng)典案例:

import { useState } from "react";

function Example() {
  const [count, setCount] = useState(0);

  return (
    

You clicked {count} times

) }

此例子中, useState(0) 是最新的 hooks api;
語(yǔ)法:

function useState(initialState: S | (() => S)): [S, Dispatch>];

其中 state 是他的值, setState 是用來設(shè)置值的函數(shù), initialState 是初始值

useState-initialState

該初始值可以接受任何參數(shù),但是記得當(dāng)他接受為一個(gè)函數(shù)時(shí),就變成了Lazy initialization (延遲初始化)
該函數(shù)返回值即為initialState

const [count, setCount] = useState(0);

const [count, setCount] = useState(()=>0);
// 這兩種初始化方式 是相等的,但是在函數(shù)為初始值時(shí)會(huì)被執(zhí)行一次

const [count, setCount] = useState(()=>{
    console.log("這里只會(huì)在初始化的時(shí)候執(zhí)行")
    // class 中的 constructor 的操作都可以移植到這里
    return 0
});
// 當(dāng)?shù)谝淮螆?zhí)行完畢后 就和另一句的代碼是相同的效果了
useState-setState

也許很多人 在使用 class 的 setState 時(shí)候,會(huì)經(jīng)常使用他的回調(diào)函數(shù),
但是這里很遺憾,他只接受新的值,如果想要對(duì)應(yīng)的回調(diào),可以使用useEffect,這個(gè)問題等會(huì)會(huì)提供一個(gè)跳轉(zhuǎn)鏈接

useEffect

語(yǔ)法:

function useEffect(effect: EffectCallback, deps?: DependencyList): void;

經(jīng)典案例:

useEffect(() => {
  console.log("在 dep 改變時(shí)觸發(fā),若無 dep 則,每次更新組件都會(huì)觸發(fā)")
  return () => {
    console.log("在組件 unmount 時(shí)觸發(fā)")
  };
});

deps 必須是一個(gè)數(shù)組,但是如果是一個(gè)空數(shù)組時(shí):

  useEffect(() => {
    console.log("效果的等于 componentDidMount")
  }, [])

即使有 deps ,他在初始化時(shí)也會(huì)觸發(fā)一次

與 setState 形成回調(diào)函數(shù):

useState-setState 中提到, class 中 setState 都是有回調(diào)的,而在 hooks 中 通過 useEffect 同樣也可以實(shí)現(xiàn)它的效果

關(guān)于回調(diào)值的探秘:

說起回調(diào)值,他能接受很多值,但是我們要搞清楚一點(diǎn) 他到底可以接受什么值,而他的變化的檢測(cè):

首先我們應(yīng)該清楚, string,number,undefined,null 他的值都是能夠正常檢測(cè)的,
問題的關(guān)鍵還是在于 object 和 function

關(guān)于 object 的試驗(yàn):

將回調(diào)值設(shè)置為一個(gè)在 function 外面的 object:

let deps = {grewer: 1}

在點(diǎn)擊按鈕時(shí):

deps.grewer = deps.grewer + 1;
console.log(deps)

可以發(fā)現(xiàn):
deps.grewer 的值在變化,但是 effect 卻沒有觸發(fā)

而這樣設(shè)置值時(shí):

deps = {grewer: deps.grewer + 1};

每次都會(huì)觸發(fā) effect 函數(shù)

再次試驗(yàn):

deps = Object.assign({}, deps)

同樣地 每次都會(huì)觸發(fā) effect 函數(shù)

得出結(jié)論:

當(dāng)依賴值為 object 時(shí),他的值引用發(fā)生變化就會(huì)觸發(fā) effect 的更新

但是如果只是對(duì)象里某個(gè)值變化而引用不變化,effect 依舊不會(huì)觸發(fā)

關(guān)于 function 的試驗(yàn)結(jié)論:

如果初始值為 function, 而將其改為數(shù)字等,會(huì)觸發(fā) effect

function 也是一個(gè)對(duì)象,當(dāng)我們添加一個(gè)值在上面時(shí),他的 effect 也不會(huì)觸發(fā)

引用為一個(gè)新函數(shù)時(shí),他每次都會(huì)觸發(fā);

試驗(yàn)完畢,相信大家對(duì)于 effect 也有了許多的了解

后續(xù)還會(huì)講述其他 hooks api 與 redux 的全面轉(zhuǎn)換, eslint 的新配置等

相關(guān)文章:

react hooks 全面轉(zhuǎn)換攻略(一) react本篇之useState,useEffect

react hooks 全面轉(zhuǎn)換攻略(二) react本篇剩余 api

react hooks 全面轉(zhuǎn)換攻略(三) 全局存儲(chǔ)解決方案

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/103301.html

相關(guān)文章

  • react hooks 全面轉(zhuǎn)換攻略(二) react本篇剩余 api

    摘要:不知道大家有沒有使用過他的作用和中的差不多吧在需要讀取的高度寬度的時(shí)候特別需要說到現(xiàn)在基本已經(jīng)講完了除了我將會(huì)放在篇中講述相關(guān)文章全面轉(zhuǎn)換攻略一本篇之全面轉(zhuǎn)換攻略二本篇剩余全面轉(zhuǎn)換攻略三全局存儲(chǔ)解決方案 useCallback,useMemo 因?yàn)檫@兩個(gè) api 的作用是一樣的,所以我放在一起講; 語(yǔ)法: function useMemo(factory: () => T, deps:...

    molyzzx 評(píng)論0 收藏0
  • 全面了解 React 新功能: Suspense 和 Hooks

    摘要:他們的應(yīng)用是比較復(fù)雜的,組件樹也是非常龐大,假設(shè)有一千個(gè)組件要渲染,每個(gè)耗費(fèi)一千個(gè)就是由于是單線程的,這里都在努力的干活,一旦開始,中間就不會(huì)停。 悄悄的, React v16.7 發(fā)布了。 React v16.7: No, This Is Not The One With Hooks. showImg(https://segmentfault.com/img/bVblq9L?w=97...

    Baaaan 評(píng)論0 收藏0
  • 【譯】如何在React Hooks中獲取數(shù)據(jù)?

    摘要:在這種情況下,如果狀態(tài)發(fā)生變化,將再次運(yùn)行以從獲取數(shù)據(jù)。你可以在內(nèi)做到在表單中獲取數(shù)據(jù)到目前為止,我們只有和按鈕的組合。現(xiàn)在,在獲取數(shù)據(jù)時(shí),可以使用向函數(shù)發(fā)送信息。例如,在成功請(qǐng)求的情況下,用于設(shè)置新狀態(tài)對(duì)象的數(shù)據(jù)。 原文鏈接: https://www.robinwieruch.de/r... 在本教程中,我想通過state和effect hook來像你展示如何用React Hook...

    habren 評(píng)論0 收藏0
  • React Hooks 中如何請(qǐng)求數(shù)據(jù)?

    摘要:現(xiàn)在,請(qǐng)求數(shù)據(jù)和查詢參數(shù)兩個(gè)相互獨(dú)立,但是我們需要像一個(gè)辦法希望他們耦合起來,只獲取輸入框輸入的參數(shù)指定的話題文章。好了,現(xiàn)在一旦你改變輸入框內(nèi)容,數(shù)據(jù)就會(huì)重新獲取。 showImg(https://segmentfault.com/img/remote/1460000018652592?w=1024&h=683); 通過這個(gè)教程,我想告訴你在 React 中如何使用 state 和 ...

    snowell 評(píng)論0 收藏0
  • 十個(gè)案例學(xué)會(huì) React Hooks

    摘要:在線傳遞給的是而不是,返回值即是想要透?jìng)鞯臄?shù)據(jù)了。所以函數(shù)組件在每次渲染的時(shí)候如果有傳遞函數(shù)的話都會(huì)重渲染子組件。在學(xué)會(huì)使用React Hooks之前,可以先看一下相關(guān)原理學(xué)習(xí)React Hooks 前言 在 React 的世界中,有容器組件和 UI 組件之分,在 React Hooks 出現(xiàn)之前,UI 組件我們可以使用函數(shù),無狀態(tài)組件來展示 UI,而對(duì)于容器組件,函數(shù)組件就顯得無能為力,我...

    williamwen1986 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<