成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

React + MobX 入門及實例(一)

simon_chen / 3018人閱讀

摘要:前言現(xiàn)在最熱門的前端框架,毫無疑問是。對于小型應(yīng)用,引入狀態(tài)管理庫是奢侈的。但對于復(fù)雜的中大型應(yīng)用,引入狀態(tài)管理庫是必要的?,F(xiàn)在熱門的狀態(tài)管理解決方案,相繼進(jìn)入開發(fā)者的視野。獲得計算得到的新并返回。

前言

現(xiàn)在最熱門的前端框架,毫無疑問是React。

React是一個狀態(tài)機,由開始的初始狀態(tài),通過與用戶的互動,導(dǎo)致狀態(tài)變化,從而重新渲染UI。

對于小型應(yīng)用,引入狀態(tài)管理庫是"奢侈的"。

但對于復(fù)雜的中大型應(yīng)用,引入狀態(tài)管理庫是"必要的"。

現(xiàn)在熱門的狀態(tài)管理解決方案Redux,MobX相繼進(jìn)入開發(fā)者的視野。

Redux、MobX哪一個更適合你的項目?

在react項目中使用redux or mobx?

正如愛因斯坦所說的 “?讓一切事物盡可能的簡單,但不要簡單”。

盡管讓我們來填一填 MobX 的坑。

介紹 1.入門

對于應(yīng)用開發(fā)中的常見問題,React 和 MobX都提供了最優(yōu)和獨特的解決方案。React 提供了優(yōu)化UI渲染的機制, 這種機制就是通過使用虛擬DOM來減少昂貴的DOM變化的數(shù)量。MobX 提供了優(yōu)化應(yīng)用狀態(tài)與 React 組件同步的機制,這種機制就是使用響應(yīng)式虛擬依賴狀態(tài)圖表,它只有在真正需要的時候才更新并且永遠(yuǎn)保持是最新的。

2.安裝

npm install --save mobx mobx-react

3.核心概念

1.state(狀態(tài))
狀態(tài)是驅(qū)動應(yīng)用的數(shù)據(jù)。

2.observable(value) && @observable
Observable 值可以是JS基本數(shù)據(jù)類型、引用類型、普通對象、類實例、數(shù)組和映射。其修飾的state會暴露出來供觀察者使用。

const map = observable.map({ key: "value"});
map.set("key", "new value");

const list = observable([1, 2, 4]);
list[2] = 3;

const person = observable({
    firstName: "Clive Staples",
    lastName: "Lewis"
});
person.firstName = "C.S.";

const temperature = observable(20);
temperature.set(25);

3.observer(觀察者)
被observer修飾的組件,將會根據(jù)組件內(nèi)使用到的被observable修飾的state的變化而自動重新渲染

import {observer} from "mobx-react";

var timerData = observable({
    secondsPassed: 0
});

setInterval(() => {
    timerData.secondsPassed++;
}, 1000);

@observer class Timer extends React.Component {
    render() {
        return (Seconds passed: { this.props.timerData.secondsPassed }  )
    }
};

React.render(, document.body);

4.action(動作)
只有在 actions 中,才可以修改 Mobx 中 state 的值。
注意:當(dāng)你使用裝飾器模式時,@action 中的 this 沒有綁定在當(dāng)前這個實例上,要用過 @action.bound 來綁定 使得 this 綁定在實例對象上。

@action.bound setName () {
  this.myName = "HUnter"
}

actions ------> state ------> view

5.computed
計算值(computed values)是可以根據(jù)現(xiàn)有的狀態(tài)或其它計算值衍生出的值。
getter:獲得計算得到的新state并返回。
setter: 不能用來直接改變計算屬性的值,但是它們可以用來作“逆向”衍生。

class Foo {
    @observable length = 2;
    @computed get squared() {
        return this.length * this.length;
    }
    set squared(value) { // 這是一個自動的動作,不需要注解
        this.length = Math.sqrt(value);
    }
}

6.autorun
這通常是當(dāng)你需要從反應(yīng)式代碼橋接到命令式代碼的情況,例如打印日志、持久化或者更新UI的代碼。

var numbers = observable([1,2,3]);
var sum = computed(() => numbers.reduce((a, b) => a + b, 0));

var disposer = autorun(() => console.log(sum.get()));
// 輸出 "6"
numbers.push(4);
// 輸出 "10"

disposer();
numbers.push(5);
// 不會再輸出任何值。`sum` 不會再重新計算。

經(jīng)驗法則:如果你有一個函數(shù)應(yīng)該自動運行,但不會產(chǎn)生一個新的值,請使用autorun。 其余情況都應(yīng)該使用 computed。

7.reactions
Reactions 和計算值很像,但它不是產(chǎn)生一個新的值,而是會產(chǎn)生一些副作用,比如打印到控制臺、網(wǎng)絡(luò)請求、遞增地更新 React 組件樹以修補DOM、等等。 簡而言之,reactions 在 響應(yīng)式編程和命令式編程之間建立溝通的橋梁。

4.應(yīng)用實例

1.TodoList

技術(shù)棧:react + react-router(v4)+mobx+webpack

效果圖:

很簡單的一個小demo,這里不分析了,源碼里有部分注釋幫助理解。
github地址:https://github.com/zhaoyu69/m...

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/90237.html

相關(guān)文章

  • React + MobX 入門實例(二)

    摘要:在上一章入門及實例一應(yīng)用實例的基礎(chǔ)上增加優(yōu)化界面增加后臺框架,操作。刪除選中項時,一定要在刪除成功后將置空,否則在下次選擇時會選中已刪除的項,雖然沒有元素但可能會影響其他一些操作。中設(shè)置跨域訪問實際是對進(jìn)行匹配。 在上一章 React + MobX 入門及實例(一) 應(yīng)用實例TodoList的基礎(chǔ)上 增加ant-design優(yōu)化界面 增加后臺express框架,mongoose操作。...

    Eidesen 評論0 收藏0
  • Mobx4.X狀態(tài)管理入門

    摘要:前言原本說接下來會專注學(xué)但是最新工作又學(xué)習(xí)了一些有意思的庫於是就再寫下來做個簡單的入門之前我寫過一篇文章這個也算是作為一個補充吧這次無非就是類似筆記把認(rèn)為的一些關(guān)鍵點記下來有些地方還沒用到就衹是描述一下代碼有些自己寫的有些文檔寫的很好就搬下 前言 原本說接下來會專注學(xué)nodejs,但是最新工作又學(xué)習(xí)了一些有意思的庫,於是就再寫下來做個簡單的入門,之前我寫過一篇文章,這個也算是作為一個補...

    CKJOKER 評論0 收藏0
  • MobX入門TodoList

    摘要:用于簡單可擴展的狀態(tài)管理,相比有更高的靈活性,文檔參考中文文檔,本文作為入門,介紹一個簡單的項目。任務(wù)已完成下一個任務(wù)修復(fù)谷歌瀏覽器頁面顯示問題提交意見反饋代碼創(chuàng)建在中引入主入口文件設(shè)置參考入門學(xué)習(xí)總結(jié) MobX用于簡單、可擴展的React狀態(tài)管理,相比Redux有更高的靈活性,文檔參考:MobX中文文檔,本文作為入門,介紹一個簡單的TodoList項目。 1. 預(yù)期效果 showIm...

    csRyan 評論0 收藏0
  • 前端進(jìn)階資源整理

    摘要:前端進(jìn)階進(jìn)階構(gòu)建項目一配置最佳實踐狀態(tài)管理之痛點分析與改良開發(fā)中所謂狀態(tài)淺析從時間旅行的烏托邦,看狀態(tài)管理的設(shè)計誤區(qū)使用更好地處理數(shù)據(jù)愛彼迎房源詳情頁中的性能優(yōu)化從零開始,在中構(gòu)建時間旅行式調(diào)試用輕松管理復(fù)雜狀態(tài)如何把業(yè)務(wù)邏輯這個故事講好和 前端進(jìn)階 webpack webpack進(jìn)階構(gòu)建項目(一) Webpack 4 配置最佳實踐 react Redux狀態(tài)管理之痛點、分析與...

    BlackMass 評論0 收藏0
  • 利用Dawn工程化工具實踐MobX數(shù)據(jù)流管理方案

    摘要:新的項目目錄設(shè)計如下放置靜態(tài)文件業(yè)務(wù)組件入口文件數(shù)據(jù)模型定義數(shù)據(jù)定義工具函數(shù)其中數(shù)據(jù)流實踐的核心概念就是數(shù)據(jù)模型和數(shù)據(jù)儲存。最后再吃我一發(fā)安利是阿里云業(yè)務(wù)運營事業(yè)部前端團隊開源的前端構(gòu)建和工程化工具。 本文首發(fā)于阿里云前端dawn團隊專欄。 項目在最初應(yīng)用 MobX 時,對較為復(fù)雜的多人協(xié)作項目的數(shù)據(jù)流管理方案沒有一個優(yōu)雅的解決方案,通過對MobX官方文檔中針對大型可維護(hù)項目最佳實踐的...

    0x584a 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<