redux-form(V7.4.2)笔记(二)
本文在上一篇(http://blog.51cto.com/zhuxianzhong/2144064)的基础上重点关注redux-devtools-extension这款调试工具的使用。 另外,撰写本文的原因其一是,redux-form库官方提供的一系列示例中,在创建store时(即在store.js)中都使用了如下创建方式: const reducer = combineReducers({ form: reduxFormReducer,// mounted under "form" }); const store = (window.devToolsExtension ? window.devToolsExtension()(createStore) : createStore)(reducer); export default store; 为什么在一般的redux教程中都使用如下写法: const store=createStore(rootReducer); 而上面却使用另外一种形式?window何以有devToolsExtension这个属性? 基于这些原因,在我打算总结的这个系列短文中干脆也顺便分析一个这个问题。 说明在阅读本文前,请注意区别两个不同的框架:redux-devtools和redux-devtools-extension。 其中,redux-devtools(https://www.npmjs.com/package/redux-devtools)使用了侵入式技术,是你的集成开发环境下开发React-Redux应用的一个强大的开发工具。这个东西能够使用monitor技术实时监听您的Store中的数据情况。在应用前,需要专门安装此模块。 不过,如果你不想安装上述模块从而不致于其侵入你的项目之中,那么,Redux DevTools Extension是一个很好的替代选择。这是一个浏览器插件,它支持Chrome,Firefox以及360浏览器等,它提供了大部分常用的监听器用于配置你的项目,不需要安装任何模块(其实其提供了安装选项),配置也很简单。 本文专注于介绍redux-devtools-extension。 【注意】当前版本中(Version 2.7+),window.devToolsExtension被重命名为window.REDUX_DEVTOOLS_EXTENSION 安装redux-devtools-extension有关安装redux-devtools-extension插件,针对不同的浏览器,官方提供了多种安装方案(https://github.com/zalmoxisus/redux-devtools-extension)。 由于我使用的是Google Chrome浏览器,所以选择从Chrome网上应用店中安装插件的方式,商店地址是:https://chrome.google.com/webstore/category/extensions。进入后,在左上角的搜索框内输入redux-devtools-extension后便可很容易地搜索到此插件。 在Redux应用中的最基本的使用方式如下面代码所示: const store = createStore( reducer,/* preloadedState,*/ window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() ); 在此,第二个参数preloadedState是可选的,用于设置 state 初始状态,一般是省略掉的。第三个参数以增强器(enhancer),也称为第三方中间件(这种称呼更合适一些吧),的方式出现。注意,这种书写要求Redux版本在3.1.0或者以上才行。 有关此插件的更复杂的应用形式,还是请参考文后提供的官方网址吧。 浏览器中简单调试应用在webstorm中通过内置终端Terminal运行npm start启动redux-form第一个示例应用。启动后,切换到Google Chrome浏览器并打开右上角的插件图标,然后在左边的表单中操作,并观察在随后弹出的右边调试窗中的信息,请参考下图: 因为是初步尝试使用,所以没有对于这个调试窗口中信息作全面分析,请原谅。但是,从上图可以推知,这种针对store中信息的变化(随着表单中的不断操作)的调试是非常有亲和力的。这从github上至今高达6783星(对于像React这种颇具挑战性的技术栈选择者来说,这已经是一个相当高的星数了)的关注度也充分认证了这一点。 参考资料1.https://www.npmjs.com/package/redux-devtools (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Flex4之元数据标签:[ArrayElementType] [Bindable] [Defau
- Cocos2d-x之MenuItem
- react-native – Navigator Invariant Violation:onlyChil
- 用于C#文件的Visual Studio“文档大纲”
- 关于AJAX
- 在C/C++中保留DELETE(全部上限)?
- 使用AJAX的ASP.NET MVC加载页面
- PostgreSQL与Oracle:PL / pgSQL的“编译时”检查
- Oracle中serveroutput参数一次设置永久保存方法
- winapi – 如何使用VB Scripting Host确定路径是相对还是绝