如何在的道具和对象使用一个方法,然后返回对象

问题描述 投票:0回答:1

我试图再现使用Ramda的appendSearchParam功能,即施加的物体的支撑的方法和然后返回所述对象。

我最好的射门被提供的ASP的功能,但该功能不返回URL对象,我严重怀疑我的“nthArg”是一个非常好的做法。然后我试图使用R.tap与ASP,但没有结果。

import {
    URL
} from 'url'
import R from 'ramda'

const u = new URL('http://www.google.com')

const appendSearchParam = (url, key, value) => {
    url.searchParams.append(key, value)
    return url
}

const aSP = R.converge(
    R.invoker(2, 'append'),
    [
        R.nthArg(1),
        R.nthArg(2),
        R.prop('searchParams')
    ]
)
javascript ramda.js
1个回答
0
投票

我不会说,使用nthArg是不好的做法。但是我不知道该索引是正确的。它应该是nthArg(0)nthArg(1)相反,我认为。

你可能想反正不是使用useWith,在这种情况下,你不需要使用nthArgidentity分别返回keyvalue

const asp = useWith(
  invoker(2, 'append'), [
    identity,               // return key
    identity,               // return value
    prop('searchParams')]); // get 'searchParams' from url

这个问题不是功能,而是你与交互的API。正如你所看到append将返回undefined但仍追加查询:

const url = new URL('http://foo.bar');

console.log(url.searchParams.append('x', 42));
console.log(url);

我不知道一个免费的点对点功能将使意义这里你需要一个参考,以使其恢复url

我可能会做这样的事情,而不是:

const asp = curry((key, value, url) =>
  url.searchParams.append(key, value) || url);

推荐问答