react事件处理函数中绑定this的bind()函数

本文介绍了React Native中this绑定的问题及解决方法。通过bind()确保事件处理函数中的this始终指向当前组件,避免了this指向问题导致的状态更新失败。同时提供了具体的代码示例。

问题引入

import React, { Component } from 'react';
import {
  Text,
  View
} from 'react-native';

export default class App extends Component<Props> {
  constructor(props){
    super(props)
    this.state={
      times:0
    }
    this.timePlus=this.timePlus.bind(this);
  }
  timePlus(){
    let time=this.state.times
    time++
    this.setState({
      times:time
    })
  }
  render() {
    return (
      <View>
        <Text onPress={this.timePlus}>有本事点我呀</Text>
//<Text onPress={this.timePlus.bind(this)}>有本事点我呀</Text>
<Text>你点了我{this.state.times}次</Text> </View>
);
}
}

每次在处理事件函数时都需要绑定this的bind函数;

 

bind() 最简单的用法是创建一个函数,使这个函数不论怎么调用都有同样的 this 值。

bind()方法会创建一个新函数,当这个新函数被调用时,它的this值是传递给bind()的第一个参数, 它的参数是bind()的其他参数和其原本的参数. 

this.x = 9;
var module = {
    x: 81,
    getX: function() { return this.x; }
};

module.getX(); // 返回 81
var retrieveX = module.getX;
retrieveX(); // 返回 9, 在这种情况下,"this"指向全局作用域

// 创建一个新函数,将"this"绑定到module对象
var boundGetX = retrieveX.bind(module);
boundGetX(); // 返回 81

 

从实例可以看出:React构造方法中的bind会将handleClick函数与这个组件Component进行绑定以确保在这个处理函数中使用this时可以时刻指向这一组件。

 

源码地址:https://github.com/zuobaiquan/react-native/tree/master/myExercise/firstProject

转载于:https://www.cnblogs.com/zuobaiquan01/p/8728949.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值