是否可以动态构建此函数?

时间:2018-04-13 10:51:30

标签: javascript typescript

背景:在React中,我们可以将名为Redux的键值存储的分区映射到组件类的属性上。这是由一个函数完成的,我们将它传递给一个所谓的connect函数,然后将它们神奇地连接在一起。问题是,这会导致我的品味太多不必要的样板,所以我希望有一个自动完成的抽象。

问题:我想使用以下类动态创建mapStateToProps函数:

class Props {
    counterModel:CounterModel = null;
}
function mapStateToProps({counterModel}:Props) {
    return {
        counterModel
    };
}

在Vanilla JS中,mapStateToProps函数如下所示:

function mapStateToProps(_a) {
    var counterModel = _a.counterModel;
    return {
        counterModel: counterModel
    };
}

看起来可以将Function构造函数(请参阅here)与Object.keys结合使用来解决此问题。但是文档说这“遭受了类似于eval的安全性和性能问题”。这对我来说是可以接受的权衡,但也许有更好的解决方案?

我的JS功夫不足以提出更好的解决方案。还有一个吗?

1 个答案:

答案 0 :(得分:2)

如果您所在州的媒体资源的名称与您的组件的道具名称相同,则可以使用arrow functiondestructingshorthand object literal获得更少的代码:

var mapStateToProps = ({counterModel, anotherProp}:Props) => ({counterModel, anotherProp}));