jjzjj

javascript - 如果直接在 Redux reducer 中修改状态会发生什么?

我正在看这个Reduxtutorial其中正在讨论以下reducer:functionvisibilityFilter(state='SHOW_ALL',action){returnaction.type==='SET_VISIBILITY_FILTER'?action.filter:state}functiontodos(state=[],action){switch(action.type){case'ADD_TODO':returnstate.concat([{text:action.text,completed:false}]);case'TOGGLE_TODO':return

javascript - 如何访问reduce中的第零个元素以计算数组中的重复次数

Node学校一时兴起,我尝试使用reduce来计算字符串在数组中重复的次数。varfruits=["Apple","Banana","Apple","Durian","Durian","Durian"],obj={};fruits.reduce(function(prev,curr,index,arr){obj[curr]?obj[curr]++:obj[curr]=1;});console.log(obj);//{Banana:1,Apple:1,Durian:3}有点在工作。出于某种原因,reduce似乎跳过了第一个元素。我不知道为什么。第一次遍历数组,index为1。我尝试加入一

javascript - 在 Javascript 中对具有单个元素的数组调用 Array.reduce

在空数组上调用reduce会抛出TypeError,这是完全可以理解的,有助于捕获错误。但是当我在一个内部只有一个项目的数组上调用它时,这种行为让我感到困惑:vararr=["a"];arr.reduce(function(a,b){return[a,b]});//returns"a"我知道reduce不适用于这样的数组,但我发现只返回元素而不调用回调或抛出错误至少很奇怪。此外,MDN文档指出回调是“对数组中的每个值执行的函数,采用四个参数:”。有人可以解释这种行为背后的原因吗? 最佳答案 回调应该是一个“二元函数”(即接受两个参数

javascript - 如何将带有比较运算符的箭头函数用于 reduce 方法?

将ESLint与Airbnb规则结合使用,我无法使用带有比较运算符的reduce方法。在下面的代码中,名为data的数组包含对象,每个对象都有一个名为id的属性。ESLint抛出的错误消息是:constmaxId=data.reduce((prev,current)=>{returnprev.id>current.id?prev.id:current.id;});ESLintError:arrow-body-style/Unexpectedblockstatementsurroundingarrowbody.constmaxId=data.reduce((prev,current)=>

javascript - 如何在 ES5 Redux reducer 中初始化默认数据?

目前我还不能使用ES6/ES2015,我只能使用ES5来编写Reduxreducer。由于reducer的状态参数必须是不可变的,即使它是未定义的,我想出了以下模式:functionmyState(state,action){if(typeofstate==='undefined'){returnmyState({value1:'foo',value2:'bar'},action);}//actualstatecalculationhere}关于如何使用ES5确保默认值的任何替代建议或意见?编辑:经过一些问题和建议:我进行递归调用的原因是我非常重视“状态不可变”。因此,即使state参

javascript - 在两个 Redux Reducers/State 之间共享数据

对于两个状态/reducer之间的数据共享,这是一个合理的解决方案吗?//combineReducersfunctioncoreReducer(state={},action){letfiltersState=filters(state.filters,action);leteventsState=events(state.events,action,{filters:filtersState});return{events:eventsState,filters:filtersState};}exportconstrootReducer=combineReducers({core:c

javascript - 从头开始创建下划线 reduce 函数

我正在努力创建自己的回调函数和高阶函数组。我坚持复制下划线减少功能或._reduce功能。有人可以帮助我了解它是如何在引擎盖下工作的,这对我来说已经有几天了,我很困惑。这是我到目前为止所拥有的。请理解我没有使用下划线库,我正在尝试复制它以便我可以进一步了解高阶函数。谢谢。varreduce=function(collection,iterator,accumulator){variterator=function(startPoint,combiner){for(vari=0;i 最佳答案 一个简单的递归函数就可以了//arr-so

javascript - Redux - combineReducers 如何知道将应用状态的哪个子集传递给 reducer

在Reduxbasicstutorial关于Reducers的部分我不太明白以下语法如何推断出应用程序状态的哪个子集要传递给调用combineReducers时引用的每个reducer。是不是单纯的匹配reducer名字上的状态成员名字?import{combineReducers}from'redux'import{ADD_TODO,COMPLETE_TODO,SET_VISIBILITY_FILTER,VisibilityFilters}from'./actions'const{SHOW_ALL}=VisibilityFiltersfunctionvisibilityFilter(

javascript - ngrx : how the reducers function are invoked, 何时被调用?

我正在尝试使用ngrx库来管理我的应用程序的状态。我浏览了许多ngrx文档和git页面。我理解有三个重要的概念:商店Reducer和行动Store是我们应用程序的单一数据源。因此,对数据的任何修改或检索都是通过Actions完成的。我的问题是当一个Action被发送到商店时到底发生了什么?它如何知道要调用哪个reducer?它是否解析所有注册到商店的reducer?可以有多个同名的Action,在这种情况下会发生什么?提前致谢。 最佳答案 一图胜千言...来源:BuildingaReduxApplicationwithAngular

javascript - redux - reducer 状态为空

我正在尝试在reduxdocs'basicexample中复制类似于TodoList示例的内容.第二个reducer接收一个数组-styleItems=[{......},{......}]-然后调用第一个函数来作用于每个单独的对象.我通过以下方式向应用程序容器提供了一个initialState,如containers/app.js所示。但是,传递给styleItemsreducer的状态似乎每次都是空白数组。但是,react会根据初始配置呈现UI,并且reactdev-tools会按预期显示状态结构。reduxstore是否以某种方式看到与react相同的东西?containers/