在reactjs中使用render方法之外的函数

时间:2016-10-27 15:31:06

标签: javascript reactjs

我有这样的代码:

// 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不是函数。我做错了什么?我如何在渲染中使用该函数?

1 个答案:

答案 0 :(得分:3)

问题在于.map this是指全局范围而不是您的组件。有几种方法可以解决这个问题

  1. 为每个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)
    
  2. this存储在变量

    var self = this;
    someVar1.map( function(i, j){
      someVar2.campos.map( function(k, j){
        someVar3.campos.map( function(z, k){
          self.myFunction(something);
        });
      })
    })
    
  3. 使用箭头功能

    someVar1.map( (i, j) => {
      someVar2.campos.map( (k, j) => {
        someVar3.campos.map( (z, k) => {
          this.myFunction(something);
        });
      })
    })