gpt4 book ai didi

javascript - React 存储中函数的调用范围

转载 作者:行者123 更新时间:2023-12-03 07:47:13 24 4
gpt4 key购买 nike

我不太擅长 Javascript,所以我不知道为什么我不能像这样调用函数 dgnProcessesFilter

var conditions = this.dgnProcessesFilter(item.proc_id, "proc_id");

我收到的错误是Uncaught TypeError: this.dgnProcessesFilter is not a function

仅几行,我就有减速功能。

dgnProcessesFilter:function(id, type){
if(type == "site_id"){
return _dgnProceses.filter((process)=>process.site_id==id);
}
if(type == "proc_id"){
return _dgnProceses.filter((process)=>process.proc_id==id);
}
},

在另一个函数中我也调用该函数,但在结果上立即返回,并且它工作得很好。

这是为什么,有人可以帮我解释一下为什么吗?

下面对此函数的调用工作正常。

getDgnProcesses: function(siteSelector) {
if(siteSelector.isNaN ){
if(siteSelector) {
return this.dgnProcessesFilter(siteSelector, "site_id");
} else {
return util.cloneArray(_dgnProceses || []);
}
} else {
if(siteSelector) {

var selectedSite = this.getSite("description", siteSelector);

if(selectedSite){
if (selectedSite.hasOwnProperty("site_id")) {
return this.dgnProcessesFilter(selectedSite.site_id, "site_id");
}
} else {
return [];
}

} else {
return util.cloneArray(_dgnProceses || []);
}
}
},

更新

调用来自搜索组件
商店包含

_searchDiagnosis: function() {
this.setState({foundDiagnosis: this.state.searchValue ? DiagnosisStore.getDiagnosisSearch(this.state.searchValue).bind(DiagnosisStore) : [] });
},

我刚刚尝试了.bind(DiagnosisStore),但它似乎没有完成这项工作。

所有函数都包含在下面。

var DiagnosisStore = assign({}, EventEmitter.prototype, {...}

最佳答案

我认为您在某些时候失去了“this”的词汇绑定(bind)。如果您使用 ES6 或转译器(如 Babel),请尝试使用“箭头”函数符号来保留周围代码的“this”值。这是一篇解释箭头函数的博客文章 https://toddmotto.com/es6-arrow-functions-syntaxes-and-lexical-scoping/

还使用新的 ES6 方法声明来确保“this”是包含该方法的对象:

getDgnProcesses(siteSelector) {

},

关于javascript - React 存储中函数的调用范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com