栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么以及何时需要在React中绑定函数和eventHandler?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么以及何时需要在React中绑定函数和eventHandler?

绑定不是特定于React的东西,而是

this
在Javascript中的工作方式。每个函数/块都有其自己的上下文,对于函数而言,其功能更特定于其调用方式。当添加ES6支持(类语法)时,React团队决定
this
不绑定类的自定义方法(也不是诸如的内置方法
componentDidMount
)。

何时绑定上下文取决于函数的用途,如果您需要访问类的props,state或其他成员,则需要对其进行绑定。

对于您的示例,每一个都是不同的,并且取决于如何设置组件。

预绑定到您的班级

.bind(this)
用于将该上下文绑定到您的组件函数。但是,它在每个渲染周期都返回一个新的函数引用!如果您不想绑定该函数的每种用法(例如单击处理程序中的绑定),则可以预绑定该函数。

一种。 在构造函数中进行绑定。又名

class SomeClass extends Component{    constructor(){        super();        this.someEventHandler = this.someEventHandler.bind(this);    }    someEventHandler(event){    }    ....}

b。 使您的自定义函数在类的胖箭头函数上。又名

class SomeClass extends Component{    someEventHandler = (event) => {    }    ....}

运行时绑定到您的课程

几种常用的方法

一种。 您可以使用内联lambda(胖箭头)函数包装组件处理函数。

onChange={ (event) => this.someEventHandler(event) }

这可以提供其他功能,例如是否需要为点击处理程序传递其他数据

<input onChange={(event) => {this.someEventHandler(event, 'username') }>
。同样可以做到
bind

b。 您可以

.bind(this)
如上所述使用。

onChange={ this.someEventHandler.bind(this) }

带有其他参数

<input onChange={ this.someEventHandler.bind(this, 'username') }>

如果要避免创建新的函数引用,但仍需要传递参数,则最好将其抽象为子组件。

在你的例子中

// 1return <input onChange={this.someEventHandler.bind(this)}>

这只是将运行时事件处理程序绑定到您的类。

// 2return <input onChange={(event) => this.someEventHandler(event) }>

另一个运行时绑定到您的类。

// 3return <input onChange={this.someEventHandler}>

您只是将函数作为回调函数传递,以在单击事件发生时触发,而没有其他参数。请确保预先绑定!

总结一下。考虑如何优化代码很不错,每种方法都有一个实用工具/目的取决于您的需求。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432283.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号