我即将开始一个新的React项目,并尝试利用我以前的知识来创建一些关于我如何构建应用程序的规则。有些事情我认为是真的:Redux保存整个应用程序的“主要”数据如果需要跨应用程序共享,Redux可以保存UI状态(例如,可以从任何地方启动的全局模态窗口)如果不需要在应用中的其他任何地方共享该状态,则组件可以使用setState保持它们自己的状态。应尽可能使用无状态组件当我创建一个需要来自Redux的状态的组件时,我将创建FooContainer.js和FooComponent.js文件-Redux连接代码将位于容器中.应用程序的很大一部分是UI繁重的,并且有很多UI逻辑/状态正在进行,但不
我正在构建一个Chrome扩展程序。我想知道即使页面发生变化,是否有一种方法可以记住选项卡的js变量。例如。如果我在example1.com上并在同一个选项卡上转到example2.com,我应该保留在example1.com上设置的变量。我不想使用Chrome存储空间。我不能使用localStorage或sessionStorage,因为chrome对不同的域有不同的存储。这可以通过哪些方式实现? 最佳答案 除了使用localStorage(通过后台页面)之外,您还可以通过从内容脚本向后台页面发送消息,将这些变量直接保存在后台页面
在许多Redux示例中,SOME_ASYNC_ACTION_ERROR或SOME_ASYNC_PENDING是被调度以操纵全局状态的操作。我想不出这样一种场景,即组件最初以全局错误/加载/挂起状态呈现是有意义的。当组件被销毁并重新安装时,需要“清除”该异步错误,这使得操纵组件的本地状态似乎是更好的选择。考虑到这一点,在Redux中处理加载/错误/挂起状态的最佳实践是什么:组件是否应该在本地默认为初始状态,但仍订阅全局应用程序状态以进行加载/出错?或者是否应该在离开组件后重置错误/加载的应用程序状态?或者这些临时状态是否应该只在本地管理? 最佳答案
教程:但是由于我使用的是redux和react路由器,所以我无法真正将MuiThemeProvider放在链的顶部。包含此库的最佳方式是什么?这是我的ReactDOM.render函数:ReactDOM.render({devTools},document.getElementById('root'));这就是路由器:exportdefault(onLogout)=>(); 最佳答案 我是这样做的。我有一个index.js,我的package.json将其作为要启动的主文件(使用npmstart)。我在其中(为简洁起见删除了一些导入
我正在尝试通过reactredux了解promises的中间件docs但不理解下面的then部分:constvanillaPromise=store=>next=>action=>{if(typeofaction.then!=='function'){returnnext(action)}returnPromise.resolve(action).then(store.dispatch)}then如何知道要分派(dispatch)什么?该操作没有像这样的参数传递returnPromise.resolve(action).then(function(action){store.dispa
是在组件内部使用mapDispatchToProps来调用Action更有效,还是在Action创建器中使用store.dispatch更有效?mapDispatchToProps示例://ComponentimportReactfrom'React';import{connect}from'react-redux';import{defaultAction}from'./actions';classMyComponentextendsComponent{onClickHandler(){this.props.dispatch(defaultAction());}render(){re
我正在为多channel聊天应用创建一个React/Redux前端。在使用redux、react-redux和redux-thunk时,我在让一些React组件在状态更改后重新呈现时遇到问题。我相信我的reducer是不可变的,并且我是通过react-redux的connect订阅的。当我运行应用程序并查看浏览器控制台时,我看到了组件的初始呈现(即具有初始的空状态),然后是状态更改(由index.js中的Action调度触发)....然后我希望组件使用新Prop重新渲染,但它没有发生。我在这里放了一个repo协议(protocol):https://github.com/mattmos
Redux-forms支持validationerrorsandwarnings.错误会显示一条消息并阻止提交表单,而警告只会显示一条消息。Redux-forms也支持asyncvalidation.我错误地认为异步验证错误和警告会被支持,但事实并非如此。不幸的是warningsarenotofficiallypossiblewithasyncvalidation.目前需要相当大的努力才能摆脱使用redux-forms,所以我试图找到一个足够的解决方法。一种解决方案是手动向表单添加警告。如果这是可能的,那么异步验证可以大部分正常执行,但在最后设置警告,而不是提供预期的错误对象。但我查看
我有一个界面,用户可以在其中触发对同一端点但具有不同参数(在本例中为UUID)的调用。到目前为止,我一直很享受switchMap的行为,每当我发送一个具有相同类型的新redux操作时取消我的飞行中的http请求,在这种情况下我仍然想要这种行为,但是仅如果新操作请求的UUID(操作对象的一部分)与已经在进行中的UUID相同。我不太确定正确的方法。例如,在一次分派(dispatch)多个Action后,我希望所有具有唯一ID的Action都完成,但那些重复现有但尚未完成的ID会取消之前的请求并取而代之。例如:store.dispatch({type:"GET_SOME_DATA",uuid
运行此代码时出现“中间件不是函数”错误。import'babel-core/polyfill';import{thunkMiddleware,Provider}from'redux-thunk';importcreateLoggerfrom'redux-logger';import{createStore,applyMiddleware}from'redux';import{fetchDistricts,fetchSchools}from'./actions.es6.js';importrootReducerfrom'./reducers.es6.js';//importAppfrom