<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### Store 在前面的章節中,我們學會了使用 action 來描述“發生了什么”,和使用 reducers 來根據 action 更新 state 的用法。 Store 就是把它們聯系到一起的對象。Store 有以下職責: 維持應用的 state; * 提供 getState() 方法獲取 state; * 提供 dispatch(action) 方法更新 state; * 通過 subscribe(listener) 注冊監聽器; * 通過 subscribe(listener) 返回的函數注銷監聽器。 再次強調一下 Redux 應用只有一個單一的 store。當需要拆分數據處理邏輯時,你應該使用 reducer 組合 而不是創建多個 store。 根據已有的 reducer 來創建 store 是非常容易的。在前一個章節中,我們使用 combineReducers() 將多個 reducer 合并成為一個。現在我們將其導入,并傳遞 createStore()。 ~~~ import { createStore } from 'redux' import todoApp from './reducers' let store = createStore(todoApp) ~~~ createStore() 的第二個參數是可選的, 用于設置 state 初始狀態。這對開發同構應用時非常有用,服務器端 redux 應用的 state 結構可以與客戶端保持一致, 那么客戶端可以將從網絡接收到的服務端 state 直接用于本地數據初始化。 `let store = createStore(todoApp, window.STATE_FROM_SERVER)` ### 發起 Actions 現在我們已經創建好了 store ,讓我們來驗證一下!雖然還沒有界面,我們已經可以測試數據處理邏輯了。 ~~~ import { addTodo, toggleTodo, setVisibilityFilter, VisibilityFilters } from './actions' // 打印初始狀態 console.log(store.getState()) // 每次 state 更新時,打印日志 // 注意 subscribe() 返回一個函數用來注銷監聽器 const unsubscribe = store.subscribe(() => console.log(store.getState()) ) // 發起一系列 action store.dispatch(addTodo('Learn about actions')) store.dispatch(addTodo('Learn about reducers')) store.dispatch(addTodo('Learn about store')) store.dispatch(toggleTodo(0)) store.dispatch(toggleTodo(1)) store.dispatch(setVisibilityFilter(VisibilityFilters.SHOW_COMPLETED)) // 停止監聽 state 更新 unsubscribe(); ~~~ 可以看到 store 里的 state 是如何變化的: 可以看到,在還沒有開發界面的時候,我們就可以定義程序的行為。而且這時候已經可以寫 reducer 和 action 創建函數的測試。不需要模擬任何東西,因為它們都是純函數。只需調用一下,對返回值做斷言,寫測試就是這么簡單。 ![](https://box.kancloud.cn/743b31cb509c344aa9019aca4678affb_916x740.png) 源碼 ~~~ index.js import { createStore } from 'redux' import todoApp from './reducers' let store = createStore(todoApp) ~~~ 下一步 在創建 todo 應用界面之前,我們先穿插學習一下數據在 Redux 應用中如何流動的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看