【发布时间】:2017-09-08 16:31:19
【问题描述】:
我正在尝试仅查找具有特定服务的用户。每个用户都有一系列服务。我需要找到的匹配如下:
userService.name === service.name && !user.disabled
下面的代码可以工作,但在处理参数重新分配时出现 ESlint 错误。
export const matchUserWithService = (user, userService, service) => {
if (userService.name === service.name && !user.disabled) {
user.isMatched = true;
userService.rights = service.rights;
}
return userService;
};
export const renderServiceAdmins = (users, selectedService) => {
const usersWithService = users.filter((user) => {
user.services.map(usrSrv => matchUserWithService(user, usrSrv, selectedService));
if (user.isMatched) return user;
return false;
});
return usersWithService.map(user => user.services.map(service => service.rights.map((right) => {
if (
service.name === selectedService.name &&
lowCase(right.name) === 'admin' &&
!right.disabled
) {
return (
<li key={user.email + randId()}>
{ user.name } | <span className="info_blue">{ user.email }</span>
</li>
);
}
return null;
})));
};
这可以用.find重构吗?
【问题讨论】:
-
You're not doing anything really weird。为什么不在
.eslintrc文件中关闭规则? -
@Andy 因为我们需要超前到 eslint :(
-
我明白了。我不是在谈论摆脱 ESLint,而只是关闭
no-param-reassign的规则。例如,如果我遇到这个错误,我会关闭它,因为我认为它对我来说不是特别有用。 ESLint 只是根据您的意愿选择。 -
规则的文档有一个代码示例jsfiddle.net/baconpat/yZPj8,调试起来会很棘手。这似乎是一种边缘情况。但在这种情况下,我认为代码无论如何都可以从一些重组中受益(这将消除 lint 错误)。
-
我可能遗漏了一些明显的东西,但不是分配给参数,你不能让它起作用并克隆
userService并返回修改后的克隆吗?它是一个昂贵的对象吗?
标签: javascript reactjs eslint higher-order-functions