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

資訊專欄INFORMATION COLUMN

React

hlcc / 3412人閱讀

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

React簡介

FeceBook開源的一套框架,專注于MVC的視圖V模塊。實質是對V視圖的一種實現。

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

提供基礎API:創建元素,渲染元素。

React的獨特之處:

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

React的核心思想:封裝組件,各個組件維護自己的狀態和 UI, 當狀態變更,自動重新渲染整個組件。

瀏覽器環境中渲染



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

JSX

JSX是React自定義的語法,最終JSX會轉化為JS運行與頁面當中

組件

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

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

無論是應用等級還是一個表單亦或是一個按鈕,都視為一個組件。然后基于組件的組合構建整個應用。

組合模式優點:

構建可以重用的組件:組件的開發能夠形成公司的組件,每個業務的開發都能積累課重用的組件。

JSX語法

具有彈性的架構: 能夠構建簡單的頁面也能構建大型的前端應用。

維護性高。

VIRTUAL DOM

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

單項數據流

單項數據流:one-way reactive data flow

React應用的核心設計模式,數據流向自頂向下。

頁面的UI和數據的對應是唯一的。

基礎API createElement

React.createElement();

創建虛擬DOM

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

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

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

參數1:虛擬DOM元素
參數2:HTML的容器元素。

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

示例:







crateClass

React.createClass();
定義組件

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

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語法

創建JSX語法的本質:使用基于XML的方式表達組件嵌套,保持和HTML一致的結構。最終所有的JSX都會編譯為原生JavaScript

嵌套規則:標簽可以任意嵌套。標簽閉合,必須嚴格閉合,否則無法編譯通過。

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

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


// 渲染HTML內部的JSX語法

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

JSX示例:

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

組件大致分類

APP 組件: 整個頁面的最完整組件

Header 組件: 頭部輸入組件

TodoList組件: 列表組件

TodoItem 組件: 列表項

Footer 組件: 底部操作組件

虛擬DOM屬性

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

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

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

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

對HTML組件

fuunction render () {
    return 

Hello

}

React自定義組件

fuunction render () {
    return 

}
JSX花括號

插值形式,動態的改變虛擬DOM中屬性值,或者內容,或使用JavaScript表達式,做簡單的運算。

語法: {表達式}

  
"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
作用:獲取組件上添加的屬性。

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

this.props : 獲取屬性值

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

this.props.children : 子節點屬性

propTypes : 屬性類型檢查

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

屬性數據的單項性

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

"use strict";

// Component
let Prat = React.createClass({
    
    getDefaultProps: function () {
        return {
            title: ["默認標題"]
        }
    },
    
    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

    設置style的樣式

    普通的CSS樣式, 遵循駝峰式命名規則

    CSS3樣式,遵循大駝峰式命名規則

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

    "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(

          <