国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

回顧Javascript React基礎(chǔ)

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:55:06
文檔

回顧Javascript React基礎(chǔ)

回顧Javascript React基礎(chǔ):前言 React核心的單向數(shù)據(jù)流、一切皆數(shù)據(jù)的state、不會(huì)改變的props,以及狀態(tài)提升等等經(jīng)常使用便不多總結(jié),需要的看官方文檔。 JSX JSX 本質(zhì)只是為 React.createElement(component, props, ...children)提供的語(yǔ)法糖! 1.React DO
推薦度:
導(dǎo)讀回顧Javascript React基礎(chǔ):前言 React核心的單向數(shù)據(jù)流、一切皆數(shù)據(jù)的state、不會(huì)改變的props,以及狀態(tài)提升等等經(jīng)常使用便不多總結(jié),需要的看官方文檔。 JSX JSX 本質(zhì)只是為 React.createElement(component, props, ...children)提供的語(yǔ)法糖! 1.React DO

前言

React核心的單向數(shù)據(jù)流、一切皆數(shù)據(jù)的state、不會(huì)改變的props,以及狀態(tài)提升等等經(jīng)常使用便不多總結(jié),需要的看官方文檔。

JSX

JSX 本質(zhì)只是為 React.createElement(component, props, ...children)提供的語(yǔ)法糖!

  • 1.React DOM 在渲染之前都被轉(zhuǎn)換成了字符串,它天生自帶防止 XSS 攻擊的屬性。
  • 2.Babel 轉(zhuǎn)譯器會(huì)把 JSX 轉(zhuǎn)換成一個(gè)名為 React.createElement()的方法調(diào)用。在線babel編譯
  • 以下兩段代碼等價(jià)(許多react的界面設(shè)計(jì)器通過這個(gè)原理,達(dá)到元數(shù)據(jù)轉(zhuǎn)化React元素,實(shí)現(xiàn)界面化編程!)
    嵌套就是多個(gè)create方法的嵌套。

    function hello() {
    return <div className="red">Hello,<span>world!</span></div>;
    }
    "use strict";
    function hello() {
    return React.createElement(
    "div",
    { className: "red" },
    "Hello,",
    React.createElement(
    "span",
    null,
    "world!"
    )
    );
    }

  • 3.JSX中的屬性是可以任何 {} 包裹的 JavaScript 表達(dá)式作為一個(gè)屬性值,不能使用if和for。
  • 需要循環(huán)和條件渲染可以使用map、三目,或者使用if/for在jsx代碼之外!

    //錯(cuò)誤的!
    class A extends React.Component {
    render() {
    return <div>{if(){}else{}}</div>;//原來還蒙蔽的不知道為什么錯(cuò)了0.0
    }
    }

    React.Component (組件)

    創(chuàng)建組件的四種方式:

    React.Component 方式

    class Greeting extends React.Component {
    render() {
    return <h1>Hello, {this.props.name}</h1>;
    }
    }

    ES5

    var createReactClass = require('create-react-class');
    var Greeting = createReactClass({
    render: function() {
    return <h1>Hello, {this.props.name}</h1>;
    }
    });
    //或者使用react
    var Greeting = React.create({
    render: function() {
    return <h1>Hello, {this.props.name}</h1>;
    }
    });

    函數(shù)式

    const Button = ({
    day,
    increment
    }) => {
    return (
    <div>
    <button onClick={increment}>Today is {day}</button>
    </div>
    )
    }

    PureComponet

    大多數(shù)情況下, 我們使用PureComponent能夠簡(jiǎn)化我們的代碼,并且提高性能,但是PureComponent的自動(dòng)為我們添加的shouldComponentUpate函數(shù),只是對(duì)props和state進(jìn)行淺比較(shadow comparison),當(dāng)props或者state本身是嵌套對(duì)象或數(shù)組等時(shí),淺比較并不能得到預(yù)期的結(jié)果,這會(huì)導(dǎo)致實(shí)際的props和state發(fā)生了變化,但組件卻沒有更新的問題。當(dāng)然還是有解決的方法的,所以建議還是少用。

    事件處理

    事件綁定的四種方法:推薦使用第一第二種。

    class Toggle extends React.Component {
    constructor(props) {
    {...}
    //方法一必須在這里綁定
    this.handleClick1 = this.handleClick.bind(this);
    }
    handleClick1() {
    this...
    }
    //方法二使用【屬性初始化器語(yǔ)法】【需要開啟babel stage-0以上】
    handleClick2=()=> {
    this...
    }
    render() {
    return (
    <div>
    <button onClick={this.handleClick1}></button>
    <button onClick={this.handleClick2}></button>
    //方法三在使用時(shí)綁定
    <button onClick={this.handleClick1.bind(this)}></button>
    //方法四在回調(diào)函數(shù)中使用 箭頭函數(shù)
    /**
    渲染的時(shí)候都會(huì)創(chuàng)建一個(gè)不同的回調(diào)函數(shù)。在大多數(shù)情況下,這沒有問題。然而如果這個(gè)回調(diào)函數(shù)作為一個(gè)屬性值傳入低階組件,這些組件可能會(huì)進(jìn)行額外的重新渲染。我們通常建議在構(gòu)造函數(shù)中綁定或使用屬性初始化器語(yǔ)法來避免這類性能問題。
    **/
    <button onClick={(e) => this.handleClick1(e)}></button>
    </div>
    );
    }
    }

    組合 vs 繼承

    在React中不推薦使用繼承,不推薦繼承自定義Component。

    //不推薦使用
    class Parent extends React.Component {
    render() {
    return <div>...</div>;
    }
    }
    class A extends Parent {
    render() {
    return <div>...</div>;
    }
    }
    //推薦使用
    class A extends React.Component {
    render() {
    return <Parent>...</Parent>;
    }
    }

    不使用 ES6

  • Component || create
  • defaultProps || getDefaultProps
  • constructor state || getInitialState
  • this bind || 不需要
  • class Greeting extends React.Component {
    constructor(props) {
    super(props);
    this.state = {count: props.initialCount};
    this.handleClick = this.handleClick.bind(this);
    }
    handleClick() {
    alert(this.state.message);
    }
    render() {
    return <h1 onClick={this.handleClick}>Hello, {this.props.name}</h1>;
    }
    }
    Greeting.defaultProps = {
    name: 'Mary'
    };
    var createReactClass = require('create-react-class');
    var Greeting = createReactClass({
    getInitialState: function() {
    return {count: this.props.initialCount};
    },
    getDefaultProps: function() {
    return {
    name: 'Mary'
    };
    },
    handleClick: function() {
    alert(this.state.message);
    },
    render: function() {
    //組件中的方法會(huì)自動(dòng)綁定至實(shí)例,不需要像上面那樣加 .bind(this)
    return <h1 onClick={this.handleClick}>Hello, {this.props.name}</h1>;
    }
    });

    Refs

    1.如果可以通過聲明式實(shí)現(xiàn),則盡量避免使用 refs。

    2.不能在函數(shù)式組件上使用 ref 屬性,因?yàn)樗鼈儧]有實(shí)例

    3.舊版 API:String 類型的 Refs,存在問題,可能會(huì)在未來移除,不推薦使用。

    4.對(duì)父組件暴露refs,在父元素拿子元素

    function CustomTextInput(props) {
    return (
    <div>
    <input ref={props.inputRef} />
    </div>
    );
    }
    
    class Parent extends React.Component {
    //this.inputElement 就是CustomTextInput中的input
    render() {
    return (
    <CustomTextInput
    inputRef={el => this.inputElement = el}
    />
    );
    }
    }
    

    ReactDOM

    獲取一個(gè)DOM除了refs還有更加簡(jiǎn)單粗暴的方法findDOMNode。

    findDOMNode 是用于操作底層DOM節(jié)點(diǎn)的備用方案。使用它的優(yōu)先級(jí)比refs更低!!

    findDOMNode 只對(duì)掛載過的組件有效。

    findDOMNode 不能用于函數(shù)式的組件中。

    import ReactDOM from 'react-dom';
    ReactDOM.render(
    element,
    container,
    [callback]//不為人知的第三個(gè)參數(shù)!!
    )
    ReactDOM.unmountComponentAtNode(container)
    ReactDOM.findDOMNode(component)

    不常用的新發(fā)現(xiàn)

  • 空的 JSX 標(biāo)簽Fragments <></>或者<React.Fragment></React.Fragment>
  • 與運(yùn)算符 && true && expression 總是返回 expression,而 false && expression 總是返回 false。
  • 阻止組件渲染常用null組件的 render 方法返回 null 并不會(huì)影響該組件生命周期方法的回調(diào)。例如,componentWillUpdate 和 componentDidUpdate 依然可以被調(diào)用。
  • 聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    回顧Javascript React基礎(chǔ)

    回顧Javascript React基礎(chǔ):前言 React核心的單向數(shù)據(jù)流、一切皆數(shù)據(jù)的state、不會(huì)改變的props,以及狀態(tài)提升等等經(jīng)常使用便不多總結(jié),需要的看官方文檔。 JSX JSX 本質(zhì)只是為 React.createElement(component, props, ...children)提供的語(yǔ)法糖! 1.React DO
    推薦度:
    標(biāo)簽: js 入門 javascript
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲天码中文字幕第一页 | 午夜一区二区三区 | 国内一级野外a一级毛片 | 国产视频网 | 日韩 亚洲 欧美 中文 高清 | 国产资源一区 | 日韩在线第三页 | 国产欧美日韩精品在钱 | 国产成人亚洲欧美三区综合 | 不卡国产视频 | 国产一级一级一级成人毛片 | 69国产成人综合久久精品91 | 狠狠色狠狠色合久久伊人 | 欧美高清在线视频一区二区 | 一区二区不卡久久精品 | 欧美福利一区 | 国产一级做a爰片在线看 | 欧区一欧区二欧区三免费 | 成人国产精品免费网站 | 欧美一区二区在线免费观看 | 国产精品综合一区二区 | 99久久久国产精品免费 | 亚洲欧美啪啪 | 99久久精品国产综合一区 | 国产丝袜在线视频 | 在线观看日韩视频 | 国产成人精品日本亚洲语音2 | 国产精品3p视频 | 可以免费观看一级毛片黄a 另类区 | 亚洲欧美日本综合 | 欧美自拍亚洲 | 成人国产激情福利久久精品 | 国偷自产一区二区免费视频 | 国产精品久久久久久久 | 亚洲国产成人久久综合碰碰动漫3d | 97在线亚洲 | 亚洲一区二区三区一品精 | 日韩午夜视频在线观看 | 久久久国产这里有的是精品 | 中文字幕国产欧美 | 国产一区二区免费播放 |