javascript 中的连续函数
continious functions in javascript
我正在学习redux,在这段代码中有一个连续的函数来传递参数。
我无法理解这背后的逻辑,因为我最初是 PHP 开发人员,这很不寻常。
你能为我解释和简化吗?
这是我的选择器:
export const personBugs = userId => createSelector(
state => state.entities.bugs,
bugs => bugs.filter(bug => bug.userId === userId )
)
这是我的调度:
console.log(bugsActions.personBugs(1)(store.getState()));
它被称为 curry 函数或 currying,这是当您想要提供一个参数并在稍后提供另一个参数时。
我不确定为什么选择器在您的操作对象上,但我确定这是一个错误。选择器通常用在组件中以获取组件所需的数据,但也可以用在中间件中以获取状态信息。
下面是如何在组件中使用选择器的示例:
const PersonBugs = React.memo(function PersonBugs({
personId,
}) {
//here is a way to use the curry
const bugs = useSelector(personBugs(personId));
//if this wasn't a curry you have to do
// const bugs = useSelector((state) =>
// personBugs(personId, state)
// );
//you could also not memoize the selector if you needed to
});
可以找到有关选择器的更多信息here
我正在学习redux,在这段代码中有一个连续的函数来传递参数。 我无法理解这背后的逻辑,因为我最初是 PHP 开发人员,这很不寻常。 你能为我解释和简化吗?
这是我的选择器:
export const personBugs = userId => createSelector(
state => state.entities.bugs,
bugs => bugs.filter(bug => bug.userId === userId )
)
这是我的调度:
console.log(bugsActions.personBugs(1)(store.getState()));
它被称为 curry 函数或 currying,这是当您想要提供一个参数并在稍后提供另一个参数时。
我不确定为什么选择器在您的操作对象上,但我确定这是一个错误。选择器通常用在组件中以获取组件所需的数据,但也可以用在中间件中以获取状态信息。
下面是如何在组件中使用选择器的示例:
const PersonBugs = React.memo(function PersonBugs({
personId,
}) {
//here is a way to use the curry
const bugs = useSelector(personBugs(personId));
//if this wasn't a curry you have to do
// const bugs = useSelector((state) =>
// personBugs(personId, state)
// );
//you could also not memoize the selector if you needed to
});
可以找到有关选择器的更多信息here