我有这样的代码:
// my_file.js
var React = require('react');
var ReactDom = require('react-dom');
var App = React.createClass({
getInitialState:function(){
return {//something};
},
myFunction:function(html){
//some code
},
render:function(){
//some code
var someVar1, someVar2, someVar3;
someVar1.map( function(i, j){
someVar2.campos.map( function(k, j){
someVar3.campos.map( function(z, k){
this.myFunction(something);
}
}
}
return (
<div>
{ //something }
</div>
);
}
});
module.exports=App;
my_file.js:16 Uncaught TypeError:this.myFunction不是函数。我做错了什么?我如何在渲染中使用该函数?
答案 0 :(得分:3)
问题在于.map
this
是指全局范围而不是您的组件。有几种方法可以解决这个问题
为每个this
.map
someVar1.map( function(i, j){
someVar2.campos.map( function(k, j){
someVar3.campos.map( function(z, k){
this.myFunction(something);
}, this);
}, this)
}, this)
将this
存储在变量
var self = this;
someVar1.map( function(i, j){
someVar2.campos.map( function(k, j){
someVar3.campos.map( function(z, k){
self.myFunction(something);
});
})
})
使用箭头功能
someVar1.map( (i, j) => {
someVar2.campos.map( (k, j) => {
someVar3.campos.map( (z, k) => {
this.myFunction(something);
});
})
})