ReactNative關於普通函數和箭頭函數的調用方式

一.箭頭函數

1.無參

  //無參箭頭函數
  press = () => {
    this.setState({
      data: 1
    })
  };

正確調用:
直接使用函數名,因爲整個函數賦值給了press,使用press代表箭頭函數,這樣不會出現初始化時自動調用

 <Text onPress={this.press} >{this.state.data}</Text> //正確

錯誤調用:

函數名後面加括號則代表了直接調用改函數,會自動調用該方法

 <Text onPress={this.press()} >{this.state.data}</Text>//錯誤

這樣寫不會自動調用,但是有點多此一舉,

 <Text onPress={()=>this.press()} >{this.state.data}</Text>//正確

2.有參

  //有參箭頭函數
  press = (num) => {
    this.setState({
      data: num
    })
  };

有參只能通過箭頭函數的方式調用,因爲加括號會直接調用函數

 <Text onPress={()=>this.press(num)} >{this.state.data}</Text>//正確

二.普通函數

1.無參

  press() {
    this.setState({
      data: 1
    })
  };

正確調用:

需要加括號來調用,不自動調用

    <Text onPress={() => this.press()} >{this.state.data}</Text>
    或者
    <Text onPress={this.press.bind(this)} >{this.state.data}</Text>

錯誤調用:

不用箭頭函數方式會自動調用

    <Text onPress={this.press()} >{this.state.data}</Text>

2.有參

  press(num) {
    this.setState({
      data: num
    })
  };

正確調用:

需要加括號來調用,不自動調用

    <Text onPress={() => this.press(num)} >{this.state.data}</Text>
    或者
    <Text onPress={this.press.bind(this,num)} >{this.state.data}</Text>

錯誤調用:

不用箭頭函數方式會自動調用

    <Text onPress={this.press(num)} >{this.state.data}</Text>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章