成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

快速入門React

figofuture / 2879人閱讀

摘要:考慮到是快速入門,于是乎我們就記住一點(diǎn),當(dāng)修改值需要重新渲染的時候,的機(jī)制是不會讓他全部重新渲染的,它只會把你修改值所在的重新更新。這一生命周期返回的任何值將會作為參數(shù)被傳遞給。

安裝react

npm install creat-react-app -g

這里直接安裝react的一個腳手架,里面包含了要用到的許多東西,幫助快速入門react

創(chuàng)建新項(xiàng)目

create-react-app my-app

cd my-app

npm start

用腳手架創(chuàng)建一個新的單頁應(yīng)用,進(jìn)到項(xiàng)目里面后start跑起來

react組件

引入Component組件

JSX語法

渲染虛擬DOM

組件props

組件state

組件嵌套

組件生命周期

組件總覽

首先在頭部引入Component組件,然后通過class方式繼承Component,最后將組件導(dǎo)出,即可成為多帶帶組件使用。需要注意的地方就是組件的首字母一定要大寫

//引入Component
import {Component} from "react";

//首字母大寫!
class MyComponent extends Component{
    
    consturtion(props){
        super(props);
        this.state={
            isShow:true
        }
    }
    /*react生命周期函數(shù)*/
    componentWillMount() {}

    componentDidMount() {}
    
    componentWillReceiveProps() {}
    
    shouldComponentUpdate() {}
    
    componentWillUpdate() {}
    
    componentDidUpdate() {}
    
    componentWillUnmount() {}
    //通過render函數(shù)可以將JSX語法渲染成真實(shí)dom
    render() {      
        return (
            

我是組件

{this.props.test}

{this.state.isShow}

) } } //首字母大寫! class Parent extends Component{ return } export default Parent;
JSX語法

確實(shí)說白了就是html標(biāo)簽寫到j(luò)s中去,然后通過babel轉(zhuǎn)譯成react虛擬DOM對象,然后再渲染。
上例中

render() {      
    return (
        
我是組件,{this.props.test}
) }

其實(shí)用的就是JSX語法,那么在標(biāo)簽內(nèi)可以嵌套js語句。想要嵌套js語句的時候需要用{}包起來。

渲染虛擬DOM

關(guān)于這一點(diǎn),要詳細(xì)說起來還挺長的??紤]到是快速入門,于是乎我們就記住一點(diǎn),當(dāng)修改值需要react重新渲染的時候,react的機(jī)制是不會讓他全部重新渲染的,它只會把你修改值所在的dom重新更新。這也是為什么react性能快的一大原因。這個選擇渲染dom的算法叫做diff算法,如果要學(xué)習(xí)react就不能把這個給忘記。在日后需要好好把這方面的知識補(bǔ)全。這里還要補(bǔ)充的就是,react把JSX語法先轉(zhuǎn)成react對象,然后通過內(nèi)部創(chuàng)建節(jié)點(diǎn)插入到dom當(dāng)中。還是考慮到快速,所以該節(jié)篇幅就不繼續(xù)展開了,這些知識日后需要好好補(bǔ)全。

組件props

props如果接觸過Vue的話,應(yīng)該會很好理解這個概念。沒接觸過也不要緊,因?yàn)槭潜容^容易接受的。我們這么理解,其實(shí)就是父組件傳給子組件的一些東西,可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型,也就是說啥都可以傳。子組件可以通過this.props這個對象來獲取父組件傳下來的值

還是看回上面的例子

class MyComponent extends Component{
    render() {
        //這里可以拿到
        return (
            

我是組件

{this.props.test}

{this.state.isShow}

) } } class Parent extends Component{ render() { //通過父組件傳進(jìn)去 return } }
組件state

組件state是狀態(tài),這里存放的就是該組件的一些會改變的變量,就是狀態(tài)。比如判斷組件屬性變化,獲取表單值等。修改state會引起react重新渲染,也就是更新狀態(tài)會引起組件刷新。我們可以通過setState()這個函數(shù)來設(shè)置state的值。不過要注意的是setState()這個函數(shù)是異步函數(shù)。下面還是看上面的例子

class MyComponent extends Component{
    consturtion(props){
        super(props);
        this.state={
            isShow:true
        }
    }
    render() {
        return (
            

我是組件

{this.props.test}

{this.state.isShow}

) } }
組件的嵌套

這個意思實(shí)際上就是在一個組件里面可以用別的組件的意思。因此你可以把組件劃分得比較細(xì)致,以便更多的復(fù)用。

class Parent extends Component{
    render() {
        //使用了MyComponent組件
        return 
    }
}
組件生命周期

在這里就說一下組件的生命周期函數(shù)吧

componentWillMount() {}組件掛載前

componentDidMount() {}組件掛載完執(zhí)行

componentWillReceiveProps() {}組件更新數(shù)據(jù)時執(zhí)行,propsstate

shouldComponentUpdate() {}組件需要更新時執(zhí)行

componentWillUpdate() {}組件更新前執(zhí)行

componentDidUpdate() {}組件更新后執(zhí)行

componentWillUnmount() {}組件銷毀前執(zhí)行

下面一張圖解釋生命周期

當(dāng)然想要暫時略過也不是不可,但日后需要了解。

 16.7 生命周期 裝載

constructor

static getDerivedStateFromProps()

render()

componentDidMount()

組件更新

static getDerivedStateFromProps()

shouldComponentUpdate()

render()

getSnapshotBeforeUpdate()

componentDidUpdate()

卸載

componentWillUnmount()

錯誤處理

static getDerivedStateFromError()

componentDidCatch()

constructor

constructor可以初始化state

constructor(props) {
  super(props);
  this.state = { color: "#333" };
}

不要直接把props附給state!此模式僅用于你希望故意忽略屬性更新 。

constructor(props) {
  super(props);
  // Don"t do this!
  this.state = { color: props.color };
}
 componentDidUpdate()

可以用作異步發(fā)請求,該生命周期在組件更新時候給多了一次機(jī)會操作dom

componentDidUpdate(prevProps) {
  // Typical usage (don"t forget to compare props):
  if (this.props.userID !== prevProps.userID) {
    this.fetchData(this.props.userID);
  }
}

為了防止重復(fù)渲染,如有setstate必須包括在條件中!

shouldComponentUpdate()

實(shí)際上作為性能優(yōu)化的一種方案,但是不能依賴于它來阻止渲染,因?yàn)檫@樣會引起bug

不推薦做深相等檢測,或使用JSON.stringify()在shouldComponentUpdate()中。這是非常無效率的會傷害性能。

注意,返回false不能阻止子組件當(dāng)他們的狀態(tài)改變時重新渲染。

static getDerivedStateFromProps()

組件實(shí)例化后和接受新屬性時將會調(diào)用getDerivedStateFromProps。它應(yīng)該返回一個對象來更新狀態(tài),或者返回null來表明新屬性不需要更新任何狀態(tài)。

getSnapshotBeforeUpdate()

getSnapshotBeforeUpdate()在最新的渲染輸出提交給DOM前將會立即調(diào)用。

它讓你的組件能在當(dāng)前的值可能要改變前獲得它們。這一生命周期返回的任何值將會 作為參數(shù)被傳遞給componentDidUpdate()。

更深入學(xué)習(xí)react

學(xué)完react,我們還需要知道react-router、redux等react全家桶。還在這推薦一個開源框架DVa.js。當(dāng)然,這是融合的比較好的,如果學(xué)有余力不妨去了解了解

附上一張學(xué)習(xí)路線圖,供大家學(xué)習(xí)參考

圖片來源:https://github.com/adam-golab/react-developer-roadmap

后話

入門react并不難,但是要用得精通卻不容易。本文并不指望能讓你懂多少react,但是如果能帶你入門,那便是他它的成功。希望每個人都能成為自己想要的樣子。

最后,成功不在一朝一夕,我們都需要努力

原創(chuàng)文章,轉(zhuǎn)載需聯(lián)系

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96130.html

相關(guān)文章

  • 2019React開發(fā)者必備的技能清單

    摘要:一份開發(fā)者必備的技能清單,請查收。入門查漏補(bǔ)缺深入學(xué)習(xí)查看原圖下載源文件使用快速上手,并了解其中的概念。官方教程入門教程小書文章精讀,問題解答。 一份react開發(fā)者必備的技能清單,請查收。入門、查漏補(bǔ)缺、深入學(xué)習(xí)... showImg(https://segmentfault.com/img/remote/1460000018000950?w=1965&h=3332); 查看原圖 ...

    AlphaWatch 評論0 收藏0
  • React 可視化開發(fā)工具 Shadow Widget 非正經(jīng)入門(之五:指令式界面設(shè)計)

    摘要:本篇解釋中類的控制指令,與指令式界面設(shè)計相關(guān)。本專欄歷史文章介紹一項(xiàng)讓可以與抗衡的技術(shù)可視化開發(fā)工具非正經(jīng)入門之一三宗罪可視化開發(fā)工具非正經(jīng)入門之二分離界面設(shè)計可視化開發(fā)工具非正經(jīng)入門之三雙源屬性與數(shù)據(jù)驅(qū)動可視化開發(fā)工具非正經(jīng)入門之四 本系列博文從 Shadow Widget 作者的視角,解釋該框架的設(shè)計要點(diǎn)。本篇解釋 Shadow Widget 中類 Vue 的控制指令,與指令式界面...

    pinecone 評論0 收藏0
  • Vue.js快速入門

    摘要:今年以來,的文檔更新很快完善社區(qū)也日漸狀大,再加上于某廠你懂的大力的推廣,的前景十分光明。一般情況下,中小型的系統(tǒng)從遷移到版本大概只需要天的時間??烊邮謬L試吧原創(chuàng)新書移動前端高效開發(fā)實(shí)戰(zhàn)已在亞馬遜京東當(dāng)當(dāng)開售。 作者:曉飛(滬江Web前端開發(fā)工程師)本文原創(chuàng),轉(zhuǎn)載請注明作者及出處 Vue.js框架已經(jīng)火了好長一段時間了,早在2015年的雙11中,淘寶的部分導(dǎo)購業(yè)務(wù)——如:雙十一晚會搖...

    KitorinZero 評論0 收藏0
  • 前端資源分享-只為更好前端

    摘要:一團(tuán)隊(duì)組織網(wǎng)站說明騰訊團(tuán)隊(duì)騰訊前端團(tuán)隊(duì),代表作品,致力于前端技術(shù)的研究騰訊社交用戶體驗(yàn)設(shè)計,簡稱,騰訊設(shè)計團(tuán)隊(duì)網(wǎng)站騰訊用戶研究與體驗(yàn)設(shè)計部百度前端研發(fā)部出品淘寶前端團(tuán)隊(duì)用技術(shù)為體驗(yàn)提供無限可能凹凸實(shí)驗(yàn)室京東用戶體驗(yàn)設(shè)計部出品奇舞團(tuán)奇虎旗下前 一、團(tuán)隊(duì)組織 網(wǎng)站 說明 騰訊 AlloyTeam 團(tuán)隊(duì) 騰訊Web前端團(tuán)隊(duì),代表作品WebQQ,致力于前端技術(shù)的研究 ISUX 騰...

    zxhaaa 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<