【问题标题】:Vue3: using curried function in composables not workingVue3:在可组合物中使用咖喱函数不起作用
【发布时间】:2021-08-31 02:41:48
【问题描述】:

我有以下可组合:

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)

是我遗漏了什么或者我真的不完全理解柯里化吗?

谢谢!

【问题讨论】:

    标签: vue.js vuejs3 currying vue-composition-api


    【解决方案1】:

    curryapicurry来看,如果提供了所有参数,则函数要么调用该函数,要么返回一个新函数,如果提供了一些参数,则该函数只需要参数的子集。

    例如在您的代码中

    // 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)
    

    【讨论】:

    • 这项工作,但是 curry(createReferralCode)(affiliateUserId) 调用该函数。我打算在提供第二个参数后执行该函数。
    • 我正在使用 lodash 咖喱函数。
    猜你喜欢
    • 2021-11-27
    • 1970-01-01
    • 2022-01-02
    • 2016-10-20
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多