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

資訊專欄INFORMATION COLUMN

React

hlcc / 3406人閱讀

摘要:基礎(chǔ)創(chuàng)建虛擬參數(shù)元素名稱,例如參數(shù)屬性集合,例如,,,從參數(shù)開始,表示該元素的子元素,通常這些元素通過創(chuàng)建,文本文件可以直接插入嘻嘻哈哈這是渲染器,將元素渲染到頁面中。

React簡介

FeceBook開源的一套框架,專注于MVC的視圖V模塊。實(shí)質(zhì)是對V視圖的一種實(shí)現(xiàn)。

React框架的設(shè)計(jì)沒有過分依賴于某個(gè)環(huán)境,它自建一套環(huán)境,就是virtual DOM(虛擬DOM)。

提供基礎(chǔ)API:創(chuàng)建元素,渲染元素。

React的獨(dú)特之處:

組件的組合模式單向數(shù)據(jù)流的設(shè)計(jì)(Date Flow)高效的性能(Virtual DOM)分離的設(shè)計(jì)

React的核心思想:封裝組件,各個(gè)組件維護(hù)自己的狀態(tài)和 UI, 當(dāng)狀態(tài)變更,自動重新渲染整個(gè)組件。

瀏覽器環(huán)境中渲染



react.js: 構(gòu)建虛擬DOM, React.createElement(); React核心庫,在應(yīng)用中必須先加載核心庫。
react-dom.js: 將虛擬DOM渲染頁面中,ReactDOM.render(); DOM渲染器,React將核心庫和渲染器分離,目的:在Web頁面中顯示開發(fā)的組件。

JSX

JSX是React自定義的語法,最終JSX會轉(zhuǎn)化為JS運(yùn)行與頁面當(dāng)中

組件

組件是React中核心概念,頁面當(dāng)中的所有元素都通過React組件來表達(dá),將要寫的React代碼絕大部分都是在做React組件的開發(fā)。

組合模式: 組合模式又稱之為:部分-整體模式。使樹形結(jié)構(gòu)的問題中,模式了簡單元素和復(fù)雜元素的概念,客戶程序可以向處理簡單元素一樣來處理復(fù)雜的元素,從而使得客戶程序與復(fù)雜元素的內(nèi)部結(jié)構(gòu)解耦。

無論是應(yīng)用等級還是一個(gè)表單亦或是一個(gè)按鈕,都視為一個(gè)組件。然后基于組件的組合構(gòu)建整個(gè)應(yīng)用。

組合模式優(yōu)點(diǎn):

構(gòu)建可以重用的組件:組件的開發(fā)能夠形成公司的組件,每個(gè)業(yè)務(wù)的開發(fā)都能積累課重用的組件。

JSX語法

具有彈性的架構(gòu): 能夠構(gòu)建簡單的頁面也能構(gòu)建大型的前端應(yīng)用。

維護(hù)性高。

VIRTUAL DOM

React抽象出來的虛擬DOM樹,虛擬樹是React高性能的關(guān)鍵。(讓需要改變的元素才去重新渲染)

單項(xiàng)數(shù)據(jù)流

單項(xiàng)數(shù)據(jù)流:one-way reactive data flow

React應(yīng)用的核心設(shè)計(jì)模式,數(shù)據(jù)流向自頂向下。

頁面的UI和數(shù)據(jù)的對應(yīng)是唯一的。

基礎(chǔ)API createElement

React.createElement();

創(chuàng)建虛擬DOM

參數(shù)1:元素名稱, 例如: div,p, h1
參數(shù)2:屬性集合,例如:title,calssName,id,style
從參數(shù)3開始,表示該元素的子元素,通常這些元素通過createElement();創(chuàng)建, (文本文件可以直接插入)

let ul = React.createElement("ul", {
    
    "title": "嘻嘻哈哈"
    
},"這是");
render

ReactDOM.render();
DOM渲染器,將元素渲染到頁面中。

參數(shù)1:虛擬DOM元素
參數(shù)2:HTML的容器元素。

ReactDOM.render(ul, document.querySelector(".app"));

示例:







crateClass

React.createClass();
定義組件

參數(shù):配置對象。
對象中可以添加任何方法,但一些屬性,方法是特殊的。

render: 組件中渲染輸出的虛擬DOM元素。

// component
let Uls = React.createClass({
    render: function () {
        
        return React.createElement(
            "ul",
            null,
            React.createElement(
                "li",
                null,
                "a"
            ),
            React.createElement(
                "li",
                null,
                "b"
            ),
            React.createElement(
                "li",
                null,
                "c"
            )
        )
        
    }
});

// 組件變成虛擬DOM
let ul = React.createElement(Uls, null);

// 渲染頁面
ReactDOM.render(ul, document.querySelector(".app"));
JSX語法

創(chuàng)建JSX語法的本質(zhì):使用基于XML的方式表達(dá)組件嵌套,保持和HTML一致的結(jié)構(gòu)。最終所有的JSX都會編譯為原生JavaScript

嵌套規(guī)則:標(biāo)簽可以任意嵌套。標(biāo)簽閉合,必須嚴(yán)格閉合,否則無法編譯通過。

編譯JSX語法:
工程化工具:fis-parse-babel2

fis.match("**.jsx", {
    parser: fis.plugin("babel2"),
    rExt: ".js"
});


// 渲染HTML內(nèi)部的JSX語法

fis.match("**.html:jsx", {
    parser: fis.plugin("babel2")
});

JSX示例:

// 創(chuàng)建組件
let Uls = React.createClass({
    render: function () {
        return (
            
  • a
  • b
  • c
); } }); // 渲染組件成 虛擬DOM let ul = (); // 渲染頁面中 ReactDOM.render(ul, document.querySelector(".app"));
HTML內(nèi)部JSX語法

組件大致分類

APP 組件: 整個(gè)頁面的最完整組件

Header 組件: 頭部輸入組件

TodoList組件: 列表組件

TodoItem 組件: 列表項(xiàng)

Footer 組件: 底部操作組件

虛擬DOM屬性

為虛擬DOM添加屬性,傳遞屬性的方式和HTML相同。

屬性可以是字符串,也可以是任意的JavaScrip變量。需要使用插值方式解析變量。

特殊屬性:
class,要使用成className
for, 要使用成htmlFor

// 創(chuàng)建組件
let Uls = React.createClass({
    render: function () {
        return (
            
  • a
  • b
  • c
); } });

對HTML組件

fuunction render () {
    return 

Hello

}

React自定義組件

fuunction render () {
    return 

}
JSX花括號

插值形式,動態(tài)的改變虛擬DOM中屬性值,或者內(nèi)容,或使用JavaScript表達(dá)式,做簡單的運(yùn)算。

語法: {表達(dá)式}

  
"use strict";

// Component
let Header = React.createClass({
    render: function () {
        
        let userName = "cyan";
        let date = new Date();
        
        return (
            
{userName}{date.getHours() > 12 ? "下午" : "上午"}
); } }); // 渲染 ReactDOM.render(
, document.querySelector(".app"));
JSX注釋
let Header = React.createClass({
    render: function () {
        {/* 這里是注釋 */}
    }
});
Component props屬性

組件中特殊屬性:props
作用:獲取組件上添加的屬性。

設(shè)置默認(rèn)的屬性,通過getDefaultProps()來設(shè)置,是React內(nèi)置方法名,在自定義方法的時(shí)候,不能重寫。

this.props : 獲取屬性值

geetDefaultProps(); : 獲取默認(rèn)屬性對象,會被調(diào)用一次,當(dāng)組件類創(chuàng)建的時(shí)候會被調(diào)用,返回值會被緩存起來,當(dāng)組件被實(shí)例化過后如果傳入的屬性沒有值,會返回默認(rèn)值屬性值。

this.props.children : 子節(jié)點(diǎn)屬性

propTypes : 屬性類型檢查

一般的,props規(guī)定是只能讀取,應(yīng)該禁止被修改。
原因: React 不能幫檢查屬性類型(propTypes),修改props對象可能會導(dǎo)致預(yù)料之外的結(jié)果。

屬性數(shù)據(jù)的單項(xiàng)性

React的單項(xiàng)數(shù)據(jù)流模式,數(shù)據(jù)的流動管道就是 props,流動的方向就組件的層級自頂向下的方向。所以一個(gè)組件是不能修改自身的屬性,組件的屬性一定是通過父組件傳遞而來(或默認(rèn)屬性)

"use strict";

// Component
let Prat = React.createClass({
    
    getDefaultProps: function () {
        return {
            title: ["默認(rèn)標(biāo)題"]
        }
    },
    
    createLi: function () {
        
        return this.props.title.map( ( val, idx ) => {
            return (
  • { val }
  • ); } ); }, render: function () { // console.log( this.props.children ); // console.log( this.props ); return (
      {this.createLi()}
    ); } }); // 渲染 ReactDOM.render(, document.querySelector(".app")); ReactDOM.render(, document.querySelector(".app1"));
    style

    設(shè)置style的樣式

    普通的CSS樣式, 遵循駝峰式命名規(guī)則

    CSS3樣式,遵循大駝峰式命名規(guī)則

    注意:樣式并不能像HTML行內(nèi)一樣,需要使用插值方式,插值中使用對象。

    "use strict";
    
    // Componedt
    let Style = React.createClass({
        
        render: function () {
            
            let sty = {
                color: "red",
                border: "1px solid #000",
                borderBottom: "2px solid tan"
            }
            
            return (
                

    title

    titile2

    ); } }); // 渲染 ReactDOM.render(