美文网首页web前端
Redux-devTools简单的使用

Redux-devTools简单的使用

作者: Moon_Yue | 来源:发表于2016-03-01 20:56 被阅读14499次

    Introducing

    redux-devtools 是一个非常棒的工具,它可以让你实时的监控Redux的状态树的Store

    Installation

    npm install --save-dev redux-devtools
    npm install --save-dev redux-devtools-log-monitor
    npm install --save-dev redux-devtools-dock-monitor
    

    Usege

    创建DevTools组件

    在你的App项目中,通过“Monitor(监视显示)”用createDevTools创建一个DevTools组件。示例用了最常用,最简单的LogMonitorDockMonitor

    containers/DevTools.js

    import React from 'react'
    
    //从redux-devtools中引入createDevTools
    import { createDevTools } from 'redux-devtools';
    
    //显示包是单独的,要额外指定
    import LogMonitor from 'redux-devtools-log-monitor';
    import DockMonitor from 'redux-devtools-dock-monitor';
    
    //创建DevTools组件
    const DevTools = createDevTools(
      <DockMonitor toggleVisibilityKey='ctrl-h'
                   changePositionKey  ='ctrl-q'>
        <LogMonitor theme='tomorrow' />
      </DockMonitor>
    );
    
    export default DevTools
    

    DevTools.instrument()通过redux的compose来扩展store

    createDevTools()创建的DevTools组件有个特殊的静态方法instrument(),它返回一个store的增强器,在开发中你需要在compose中使用。注意DevTools.instrument()要放在applyMiddleware后,因为你的applyMiddleware可以存在异步行为,为了确保所有的actions显示在store中,所以要放在后面

    store/create.js

    import {createStore,applyMiddleware,compose} from 'redux'
    import rootReducer from './modules/reducers'
    
    import thunk from './middleware/thunk'
    import DevTools from '../containers/DevTools'
    
    const enhancer = compose(
      //你要使用的中间件,放在前面
      applyMiddleware(thunk),
      //必须的!启用带有monitors(监视显示)的DevTools
      DevTools.instrument()
    )
    
    export default function createStoreWithMiddleware(initialState){
      //注意:仅仅只有redux>=3.1.0支持第三个参数
      const store = createStore(rootReducer,initialState,enhancer)
      return store
    }
    

    Render <DevTools /> in your App

    import React from 'react';
    import { render } from 'react-dom';
    import { Provider } from 'react-redux';
    import configureStore from './store/configureStore';
    import TodoApp from './components/Counter';
    
    //注意,不要直接这样做,要区分开发环境和生产环境
    import DevTools from './containers/DevTools';
    
    const store = configureStore();
    
    render(
      <Provider store={store}>
        <div>
          <Counter />
          <DevTools />
        </div>
      </Provider>
      document.getElementById('app')
    );
    

    参考文档:redux-devTools

    相关文章

      网友评论

      • 别过经年:这么会在页面展示devtools,而不是使用Chrome的redux插件
      • Dabao123:作者知道 typescript 使用 devtools?
      • 放码过来吧:很好,成功接入,只是借鉴,作者也只是把关键的提出来了。一个路过的无辜的观众的成功经历~
      • 5dabb448cbaf:还得入侵代码什么?
      • f120910e3134:store文件夹里面应该有什么????
        export default function createStoreWithMiddleware(initialState){
        这个哪里被用到了?
        R_X:应该在入口文件index.js中调用,就像 传统的 Redix.createStore() 那样。这里只是改写了而已,返回值仍然是一个 Redux store,可以传递给 Redux 的 <Provider store={store}/>

      本文标题:Redux-devTools简单的使用

      本文链接:https://www.haomeiwen.com/subject/ybqnkttx.html