使用函数运行函数

时间:2016-09-03 12:48:09

标签: javascript reactjs react-native

我正在尝试调用其他函数中的函数

因此,如果我这样做,它将起作用:我在这里所做的只是来自调用SearchUpdater(text)函数的Updater函数,它可以工作。

class Search2 extends React.Component {
  constructor(props) {
    super(props);

    const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
    this.state = {
      dataSource: ds.cloneWithRows(['row 1', 'row 2']),
    };
  }

Updater(text){
       var newArray = []
        newArray.push(text)
          this.setState({
            dataSource: this.state.dataSource.cloneWithRows(newArray),
          });

}


  SearchUpdater(text){


  this.Updater(text)




  }

但是,如果我想在SearchUpdater中运行一些函数(我有一些复杂的逻辑,我想放入..让它更容易),它会说this.updater未定义......

class Search2 extends React.Component {
  constructor(props) {
    super(props);

    const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
    this.state = {
      dataSource: ds.cloneWithRows(['row 1', 'row 2']),
    };
  }

Updater(text){
       var newArray = []
        newArray.push(text)
          this.setState({
            dataSource: this.state.dataSource.cloneWithRows(newArray),
          });

}


  SearchUpdater(text){

  var ComplicatedLogicFunc = function(){
      this.Updater("HEYO")

  }
  ComplicatedLogicFunc();



  }

任何帮助都会很棒.. 谢谢!

1 个答案:

答案 0 :(得分:1)

那是因为你的内部函数PS1+=$'\033[K' #erase to end of line }中的this关键字没有引用var ComplicatedLogicFunc实例。

对于此示例,您可以使用Arrow functions(保留Search2的值):

this

var ComplicatedLogicFunc = () => { this.Updater("HEYO"); }; 关键字显式绑定到函数调用上下文:

this

或者你可以简单地将你的本地上下文存储在另一个变量中:

ComplicatedLogicFunc.call(this);

您可以在此处详细了解SearchUpdater(text) { var self = this; var ComplicatedLogicFunc = function(){ self.Updater("HEYO") } ComplicatedLogicFunc(); } 关键字在JavaScript中的工作原理:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this