我想知道将常量参数绑定到构造函数中的方法是一种好习惯还是有更好的选择?
f.e。
constructor() {
super();
this.openModalWithFirstTabActive = this.openModal.bind(this, TAB.FIRST);
this.openModalWithSecondTabActive = this.openModal.bind(this, TAB.SECOND);
}
openModal(tabId) {
const {
openModal,
} = this.props;
/*
lots of logic and stuff
*/
openModal({
activeTabId: tabId,
...restProps,
});
}
编辑
我将提供更多代码,并将描述我的使用情况,以便更好地理解。
我已经使用openModal方法进行了更新,在我的用例中,它更大并且具有更多的逻辑。
因此,我有一个模式,其中有两个选项卡。我有两个按钮,打开按钮1模态需要打开,第一个选项卡需要激活,按下按钮2模态需要打开,第二个选项卡需要激活。
我在构造函数中绑定了两个方法,两个方法都仅在指定了不同的activeTabId的情况下才调用this.openModal。这样可以避免代码重复和箭头功能。
所以我的问题是,还有其他更好的选择吗?
答案 0 :(得分:2)
将常量值绑定到函数没有意义,因为可以在方法内部直接访问它们。另外,由于绑定的参数是函数的第一个参数,因此在调试或处理方法中的逻辑时可能会导致混淆
在构造函数中使用bind时,将导致创建该函数的两个实例,这不会影响性能。
在某些情况下,需要在不使用render的情况下将动态值传递给方法的情况下,可以参考以下文章
How to avoid bind or inline arrow functions inside render method