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)