Redux 是什麼

每當咱們談及到 redux,你們都會說是 react 的狀態管理工具。這麼說確實沒錯,畢竟 redux 項目也是 React Community 組織下的一個子項目。並且 redux 的誕生也是和 react 這個 ui 庫急需一個狀態管理解決方案有很大的聯繫。可是 redux 和 react 並無任何的耦合。雖然它們常常一塊兒用,可是 redux 的用途並不侷限於 react,或者說,和 react 的結合只是 redux 的使用方式之一。node

那麼撇開 react 不談, redux 究竟是什麼呢?咱們看一下這個例子。react

在實際的開發當中,咱們可能會碰到這樣的需求:監聽一個事件,當事件觸發的時候,咱們能夠作一些想作的事情。git

const cat = {
  name: 'youtiao',
  age: 1,
  weight: 6
};

// 監聽 'update_weight' 事件
events.on('update_weight', weight => {
  if (weight > cat.weight) {

    // 沒錯,要作的事情就是無情的嘲諷
    console.log('哈哈哈,你又長胖了!!');
    cat.weight = weight;
  }
});

// 觸發 'update_weight' 事件
events.trigger('update_weight', { weight: 8 });

// 查看改變以後的 cat
console.log(cat);
複製代碼

開源社區有不少庫能夠完成這樣的需求,固然,這裏是講 redux 的,按照劇本走,咱們確定用 redux 來作啦。github

const { createStore } = require('redux');

// 監聽事件
const listener = (oldCat, action) => {

  // 註冊 'update_weight' 事件
  if (action.type === 'update_weight') {
    
    // 當新的 weight 大於舊的 weight 時
    if (action.weight > oldCat.weight) {
      console.log('哈哈哈,你又長胖了!!');
      const newCat = Object.assign({}, oldCat, { weight: action.weight });
      return newCat;
    }
  }
  return oldCat;
};

// 綁定監聽事件到 cat 對象上
const store = createStore(listener, cat);

// 觸發 'update_weight' 事件
store.dispatch({ type: 'update_weight', weight: 8 });

// 查看觸發事件以後的 cat 對象
console.log(store.getState());
// 哈哈哈,你又長胖了!!
// { name: 'youtiao', age: 1, weight: 8 }
複製代碼

可是!!!redux 是一門很講究的庫,雖然上面的例子跑起來沒有任何問題,可是有一件事情 -- 嘲諷console.log('哈哈哈,你又長胖了!!'),不該該放在 listener 裏面作。而是應該放到 redux 中間件裏去作。至於什麼是 redux 中間件爲何要這麼麻煩,我以爲能夠在後面的文章中再和你們探討一下,同時也歡迎你們在評論區提出本身的意見和建議。redux

好,看完這個例子,你們知道 redux 是什麼了嗎?emmm,其實我也不知道 redux 是什麼,反正我知道了它能夠用來作什麼事情。就像一個扳手🔧,它創造出來是用來擰螺絲的,也許這是它最擅長的。可是誰說不能用扳手來砸核桃呢,或者當裝飾,甚至當武器也能夠呀~工具

代碼地址: Redux 是什麼,直接控制檯運行 node ./demo0/index.js 查看效果post

下一篇:Redux 入門 -- 基礎用法ui

相關文章
相關標籤/搜索