小编1ve*_*ven的帖子

在Typescript中使用函数参数进行隐式类型推断

我有map功能:

const map = <T, U>(f: (x: T) => U, arr: T[]): U[] => {
  return arr.map((val) => f(val));
}
Run Code Online (Sandbox Code Playgroud)

当我map使用匿名函数作为回调调用时,它的返回类型是正确的:

// `x1` variable type here is { name: string }[], which is correct
const x1 = map(x => x, [{name: 'John'}]);
Run Code Online (Sandbox Code Playgroud)

但是当我提供identity函数而不是匿名函数时,返回类型是错误的:

const identity = <T>(x: T) => x
// return type of `x2` is {}[] here
const x2 = map(identity, [{name: 'John'}]);
Run Code Online (Sandbox Code Playgroud)

如何为第二个例子获得正确的类型结果,而不为map函数提供显式类型参数?

typescript

8
推荐指数
1
解决办法
223
查看次数

如何在redux-observable中执行史诗中的副作用?

redux-observable,史诗正在接受行动流并返回新的行动流.在我的用例中,我需要在调度某个操作后发送分析事件,之后不执行任何操作.

有了redux-saga,我可以使用takeEvery,并在saga函数内部执行副作用:

function* saga() {
  yield takeEvery('SOME_ACTION', function*() {
    sendAnalytics();
  })
}
Run Code Online (Sandbox Code Playgroud)

但我怎样才能实现同样的目标redux-observable呢?有很多副作用,不需要调度新的动作,比如初始化插件,记录,设置cookie等......

如果它是这两个库的反模式,那么应该使用什么解决方案来实现这些效果呢?

javascript rxjs redux redux-saga redux-observable

7
推荐指数
1
解决办法
1490
查看次数

React传递道具向下到所有后代组件

用例是我想"毫不费力地"将某些prop值传递给所有后代组件.不确定这在React中是否可行.

所以不要这样做:

class Parent extends Component {
    constructor() {
        super(props);
        this.props.componentID = "123456";
    }
    render() {
        return <Child1 componentID={this.props.componentID} />
    }
}

class Child1 extends Component {

    render() {
        return <Child2 componentID={this.props.componentID} />
    }
}

class Child2 extends Component {

    render() {
        return <div>{this.props.componentID}</div>
    }
}
Run Code Online (Sandbox Code Playgroud)

做这样的事情:

class Parent extends Component {
    constructor() {
        this.props.componentID = "123456";
    }

    passComponentIDToAllDescendantComponents() {
        // Some super nifty code
    }

    render() {
        return <Child1 />
    }
}

// etc...
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

javascript children descendant reactjs

4
推荐指数
1
解决办法
2230
查看次数

如何在 GitHub API 中获取特定组织的贡献者列表

有没有办法使用 GitHub API 或任何外部服务从 GitHub 上的组织中获取所有贡献者?

我正在尝试angular使用 GitHub API从组织中获取所有贡献者。

我只找到了一种解决方案:

  1. angular使用此请求从组织获取所有存储库:

    GET https://api.github.com/orgs/angular/repos
    
    Run Code Online (Sandbox Code Playgroud)
  2. 对于每个 repo,通过此请求获取其所有贡献者:

    GET https://api.github.com/repos/angular/:repo/contributors
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将所有派生数据合并到一个数组中。

它似乎有效,但我认为这个解决方案非常麻烦。我以这种方式发送了大约 300 个请求,它们正在处理大约 20 秒(应用程序将被冻结,直到所有请求都没有完成)。

问题:

  1. 这种方法有什么替代方法吗?
  2. github 注册的应用程序可以处理这么多请求吗?我提到,每次应用程序启动时都会发送这 300 个请求。

github github-api

4
推荐指数
1
解决办法
1294
查看次数

如果需要,使用正则表达式向字符串添加前导斜杠和尾随斜杠

我遇到一个问题,如果字符串没有斜杠,我需要添加前导斜杠和尾随斜杠,或者如果字符串已经有斜杠,则不执行任何操作。

例如:

"/path" => "/path/"

"path/" => "/path/"

"path" => "/path/"

"/path/" => "/path/"

"/" => "/"

"" => "/"
Run Code Online (Sandbox Code Playgroud)

我尝试使用这个正则表达式,但它没有添加尾部斜杠:

'/path'.replace(/(^\/?)|(\/?$)/, '/'); // output is "/path"
Run Code Online (Sandbox Code Playgroud)

javascript regex

3
推荐指数
1
解决办法
2660
查看次数

如何使用类似的操作抽象多个reducer

我的应用程序中有多个实体.每个实体都独立于其他实体.所以我为每个实体创建了一个单独的reducer,并在创建store时组合它们.

每个条目都有一些常见的操作,如

1)设置项目清单2)添加单项3)更新单项4)删除单项

所以在每个reducer中我都有相同类型的代码重复

设置清单

return {
        ...state,
        list: {
            ...state.list,
            ...action.list
        }
 };
Run Code Online (Sandbox Code Playgroud)

添加单个项目

return {
        ...state,
        list: {
            ...state.items,
            [action.item.id]: {
                ...state.list[action.item.id],
                ...action.item
            }
        }
 };
Run Code Online (Sandbox Code Playgroud)

..更新操作和删除操作的相似代码

有没有我可以抽象出这个代码,并为每个实体保留一个单独的reducer?

redux react-redux

1
推荐指数
1
解决办法
704
查看次数