在_.map中使用'this'属性

时间:2017-01-14 14:17:52

标签: javascript node.js reactjs ecmascript-6 underscore.js

我正在尝试在_.map循环中调用setState函数,但是循环丢失了属性'this',我不能在此使用setState,因为这= undefined

  cargaDinamica(){

    _.map(this.state.redis, function(cache){
      obj.url = 'http://localhost:7000/viewlogredis';
      ServiceOS(obj)
      .then(retorno => {
        console.log("aaaa", this);
        view = retorno;
         this.setState({log : view});
      })
      .catch(err => {throw new Error(err)});


    obj = {url : 'http://localhost:7000' + cache.WebService,
            IPRedis: cache.IPDBMaster,
            WebService: cache.WebService,
            log : log};
    console.log("CARGA: ", obj);
     ServiceOS(obj)
       .then(function(carga) {
         console.log('CHEGOU AQUI');
         console.log("OK");
       })
       .catch(err => {throw new Error(err)});


    });

  },

这是我的反应函数/ \

2 个答案:

答案 0 :(得分:0)

您需要更改此部分

function(cache)

使用

(cache) =>

函数将它绑定到它的作用域,而箭头函数将在声明它的上下文中绑定它。

答案 1 :(得分:0)

假设这是在一个扩展React.Component的类中,你可以在类的构造函数中绑定lexical:

class YourClass extends React.Component {
  constructor(props) {
    super(props);
    this.cargaDinamica = this.cargaDinamica.bind(this);
  }

  cargaDinamica() {
    your method here
  }

这将确保“this”指向您方法中的类范围,因为它似乎是您想要的。