【React Native】JavaScript 中 bind 方法

本文详细介绍了ReactNative中bind方法的应用,展示了如何使用bind方法将事件操作与处理函数关联起来,实现点击事件触发特定功能。并通过具体示例对比了bind方法与直接调用的区别,同时介绍了箭头函数作为另一种绑定方式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题其实是一个 JavaScript 中的问题。JavaScript中jQury的bind方法为选定元素添加事件处理程序,规定事件发生时运行的函数。
 
语法为:

$(selector).bind(event,data,function)

也就是相对应的event事件发生时就会执行function函数。data是传递数据的可选参数。event和function必须指定明确。


 在React Native中bind方法的作用也是这样,为指定的事件添加相应的处理函数。就是将处理函数和指定的操作绑定在一起。操作触发时函数执行。
 

 为了更明确的体现这种事件绑定关系,做下面实际例子:

在点击登录按钮时,弹出alert对话框,效果如下(只是按钮点击与弹窗,输入框请忽略)。
这里写图片描述


实现上面效果时,需要用bind方法将点击操作和弹窗绑定在一起。
代码为:

	   <TouchableOpacity
          style={styles.style_view_commit}
          onPress={this.show.bind(this,"XX")}
        >
          <Text style={{ color: '#fff' }}>
            登录
          </Text>
        </TouchableOpacity>

而其中的show函数:

  show(text){
    alert('确认名字为'+text+"?");
  }

这是正确的绑定,实现了点击弹窗的效果。
而当不通过bind方法时,直接调用this.show   就是将代码改为如下(show方法不变):

	 <TouchableOpacity
          style={styles.style_view_commit}
          onPress={this.show("XX")}
        >
          <Text style={{ color: '#fff' }}>
            登录
          </Text>
        </TouchableOpacity>

此时的效果:


xiaoguo


已经不可以直接点击来弹窗了。但是发现ReLoad时会出现弹窗。
也就是说,没有bind时组件加载时会执行该函数,但是点击操作并不能使函数执行。

当onPress写成this直接调用(this.show)时,只会在reload时调用一次,而后的点击操作并不会弹出alert。因为它就是在组件渲染加载时调用一次,并没有将点击操作和函数关联,做不到根据点击来执行show函数。通过bind就能解决,也就是说这里的bind绑定,是将点击事件这个操作和show函数联系在一起,当点击按钮操作时,就会执行这个函数。所以,bind函数就是建立操作和函数执行的这种联系。


####箭头函数也能完成事件绑定 另外,上面的bind绑定操作和show函数可以直接通过箭头函数完成。箭头函数可以直接完成bind绑定(它会绑定当前scope的this引用)。可以参照ES6写法--[React Native中文社区中ES5和ES6的比较--方法作为回调部分](http://bbs.reactnative.cn/topic/15/react-react-native-%E7%9A%84es5-es6%E5%86%99%E6%B3%95%E5%AF%B9%E7%85%A7%E8%A1%A8/2)。 也就是将上面实现代码写成如下形式: ``` this.show("XX")} >

所以,bind将事件操作和函数处理建立联系,bind和箭头函数都能完成这一绑定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值