Vue3:在可组合项中使用柯里化函数不起作用
Vue3: using curried function in composables not working
我有以下可组合项:
export default function useReferralCodes(affiliateUserId) {
let createReferralCode = (affiliateUserId, payload) => {
console.log('affiliateUserId', affiliateUserId)
console.log('payload', payload)
}
let curriedReferralCode = curry(createReferralCode)
curriedReferralCode(affiliateUserId)
return {
createReferralCode,
curriedReferralCode
}
}
现在,当我在组件内部使用它时,它不是这样工作的:
methods: {
onSubmit (payload) {
this.curriedReferralCode(payload) // Outputs nothing
}
}
但是这项工作:
this.curriedReferralCode(3)(payload)
我是否遗漏了什么或者我真的不完全理解柯里化?
谢谢!
从 curry
api 判断,curry
一个函数要么在提供了所有参数的情况下调用该函数,要么 returns 一个只需要一个子集的新函数如果提供了一些参数。
例如在您的代码中
// createReferralCode requires 2 params
let createReferralCode = (affiliateUserId, payload) => {
console.log('affiliateUserId', affiliateUserId)
console.log('payload', payload)
}
// curriedReferralCode is the curried version of createReferralCode
let curriedReferralCode = curry(createReferralCode)
curriedReferralCode(3, payload) // Equivalent to createReferralCode(3, payload)
curriedReferralCode(3) // Only 1 param provided out of 2: this creates and returns a function that requires the missing param *payload*
curriedReferralCode(3)(payload) // According to what has been said above, equivalent to createReferralCode(3, payload)
修复您的代码:
// Provide the context param when you create the function
let curriedReferralCode = curry(createReferralCode)(affiliateUserId)
我有以下可组合项:
export default function useReferralCodes(affiliateUserId) {
let createReferralCode = (affiliateUserId, payload) => {
console.log('affiliateUserId', affiliateUserId)
console.log('payload', payload)
}
let curriedReferralCode = curry(createReferralCode)
curriedReferralCode(affiliateUserId)
return {
createReferralCode,
curriedReferralCode
}
}
现在,当我在组件内部使用它时,它不是这样工作的:
methods: {
onSubmit (payload) {
this.curriedReferralCode(payload) // Outputs nothing
}
}
但是这项工作:
this.curriedReferralCode(3)(payload)
我是否遗漏了什么或者我真的不完全理解柯里化?
谢谢!
从 curry
api 判断,curry
一个函数要么在提供了所有参数的情况下调用该函数,要么 returns 一个只需要一个子集的新函数如果提供了一些参数。
例如在您的代码中
// createReferralCode requires 2 params
let createReferralCode = (affiliateUserId, payload) => {
console.log('affiliateUserId', affiliateUserId)
console.log('payload', payload)
}
// curriedReferralCode is the curried version of createReferralCode
let curriedReferralCode = curry(createReferralCode)
curriedReferralCode(3, payload) // Equivalent to createReferralCode(3, payload)
curriedReferralCode(3) // Only 1 param provided out of 2: this creates and returns a function that requires the missing param *payload*
curriedReferralCode(3)(payload) // According to what has been said above, equivalent to createReferralCode(3, payload)
修复您的代码:
// Provide the context param when you create the function
let curriedReferralCode = curry(createReferralCode)(affiliateUserId)