React Native 关于箭头函数、普通函数与点击事件的调用

2022-02-23  本文已影响0人  老米拉

箭头函数

  //箭头函数
  press0 = () => {
    this.setState({
      data0: "0被点击了"
    })
  };
 <Text
  style={styles.text}
  onPress={this.press0}>{this.state.data0}</Text>
 <Text
  style={styles.text}
  onPress={this.press0()}>{this.state.data0}</Text>

普通函数

普通函数的无参与有参的调用方式相同。注意的是有参的函数使用bind方式传递参数时this必须在最前面。

调用方式

(1) 箭头方式

onPress={() => this.press1()}

(2) bind方式

  onPress={this.press2.bind(this)}

无参

// 一般方法(无参)

  press1() {
    this.setState({
      data1: "1被点击了"
    })
  };

  press2() {
    this.setState({
      data2: "2被点击了"
    })
  };

调用
(1)正确:不被立即执行

    <Text
      style={styles.text}
      onPress={() => this.press1()}
    >{this.state.data1}</Text>

    <Text
      style={styles.text}
      onPress={this.press2.bind(this)}
    >{this.state.data2}</Text>

(2)错误:被立即执行
错误原因:同上render渲染被循环调用

<Text
    style={styles.text}
    onPress={this.press1()}>
{this.state.data1}</Text>

有参
//一般方法(有参)

  press3(x) {
    this.setState({
      data3: x
    })
  };

  press4(x) {
    this.setState({
      data4: x
    })
  };

调用:
(1)正确:不被立即执行

        <Text
          style={styles.text}
          onPress={this.press3.bind(this, 2222)}
        >{this.state.data3}</Text>
        <Text
          style={styles.text}
          onPress={()=>this.press4(2222)}
        >{this.state.data4}</Text>

(2)错误:被立即执行

  press5 = (x) => {
    this.setState({
      data5: x
    })
  };

  <Text
    style={styles.text}
    onPress={this.press5(2222)}>{this.state.data5}</Text>

————————————————
版权声明:本文为CSDN博主「danfengw」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/danfengw/article/details/80840060

上一篇下一篇

猜你喜欢

热点阅读