Javascript 如何从减速器检查提交的是否为真

Javascript 如何从减速器检查提交的是否为真,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在显示一个页面加载器,从减速机中获取该加载器的值。如果提交的值为true,则显示加载程序,否则加载程序将关闭。 由于我使用多个减速机,我需要检查每个减速机提交的是否正确 isLoading: state.agentState.submitted || state.chitState.submitted || state.chittiesState.submitted || state.employeeState.submitted || state.userState.s

我正在显示一个页面加载器,从减速机中获取该加载器的值。如果提交的值为true,则显示加载程序,否则加载程序将关闭。 由于我使用多个减速机,我需要检查每个减速机提交的是否正确

isLoading:
  state.agentState.submitted ||
  state.chitState.submitted ||
  state.chittiesState.submitted ||
  state.employeeState.submitted ||
  state.userState.submitted ||
  state.visitorState.submitted


如何简化上述条件。

已更新

我为您创建了一个沙盒,您可以在其中看到我在上面的评论中的意思:

别忘了导入lodash函数:

import { some } from 'lodash';
我的包中的Lodash.json

"lodash": "^4.17.5",
只需使用lodash中的一些来循环遍历状态,看看是否可以找到键为submitted===true的任何状态对象。如果它找到1,它将返回true;如果它没有找到,它将返回false

 const isLoading = some(fakeState, item => item.submitted === true);

已更新

我为您创建了一个沙盒,您可以在其中看到我在上面的评论中的意思:

别忘了导入lodash函数:

import { some } from 'lodash';
我的包中的Lodash.json

"lodash": "^4.17.5",
只需使用lodash中的一些来循环遍历状态,看看是否可以找到键为submitted===true的任何状态对象。如果它找到1,它将返回true;如果它没有找到,它将返回false

 const isLoading = some(fakeState, item => item.submitted === true);


这就是方法。我看不到其他更好的方法。您可以再添加一个只能单独管理ui状态的减速机,它将提交一个属性,您可以在显示加载图标时设置该属性。@VikramSingh如果我为加载程序编写单独的减速机,如何将每个减速机提交的值传递给新创建的reducer无论您在这里做什么,都将使用ui reducer,您只需更改操作的类型并分派它。不必使用“| |”检查所有语句,您可以使用lodash中的filter函数以“更干净”的方式检查是否有任何提交的值设置为true。类似于这样的内容:isLoading=\uu.filter(state,yourFunctionHere)!==[]这就是方法。我看不到其他更好的方法。您可以再添加一个只能单独管理ui状态的减速机,它将提交一个属性,您可以在显示加载图标时设置该属性。@VikramSingh如果我为加载程序编写单独的减速机,如何将每个减速机提交的值传递给新创建的reducer无论您在这里做什么,都将使用ui reducer,您只需更改操作的类型并分派它。不必使用“| |”检查所有语句,您可以使用lodash中的filter函数以“更干净”的方式检查是否有任何提交的值设置为true。类似于这样的内容:isLoading=\uu.filter(state,yourFunctionHere)!==[]是否可以使用any而不是filterso据我所知,只能在阵列上使用any,并且您的状态是一个对象,因此,如果您使用类似object.keys的内容,则只能使用any。但是lodash的过滤器已经为您处理了这个问题,所以我建议您坚持使用过滤器:D您是否有任何特定的原因想要使用它?我很好奇:)可以使用
Object.entries(state)。一些([[uu,val])=>!!val.submitted)
。@StephanHovius我尝试过isLoading:some(state,(item)=>item.submitted==true),我得到了相同的结果。我在这里找到了:u.any是u.some@Nidhinkumar的别名哦,是的,我知道的some()函数!那太正确了!我不知道别名:)some()更好,因为它已经为您返回了一个布尔值:)找到了!:我会更新我的答案!是否可以使用any而不是filterso据我所知,只能在数组上使用any,并且您的状态是一个对象,因此,如果您使用类似object.keys的内容,则只能使用any。但是lodash的过滤器已经为您处理了这个问题,所以我建议您坚持使用过滤器:D您是否有任何特定的原因想要使用它?我很好奇:)可以使用
Object.entries(state)。一些([[uu,val])=>!!val.submitted)
。@StephanHovius我尝试过isLoading:some(state,(item)=>item.submitted==true),我得到了相同的结果。我在这里找到了:u.any是u.some@Nidhinkumar的别名哦,是的,我知道的some()函数!那太正确了!我不知道别名:)some()更好,因为它已经为您返回了一个布尔值:)找到了!:我会更新我的答案!