博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React如何绑定一个函数到一个组件实例?
阅读量:6175 次
发布时间:2019-06-21

本文共 1646 字,大约阅读时间需要 5 分钟。

有以下几种方式可以确保函数可以访问组件属性,比如像this.props和this.state,取决于使用的语法和构建步骤。

  1. 在构造函数中绑定(ES2015)
class Foo extends Component {  constructor(props) {    super(props);    this.handleClick = this.handleClick.bind(this);  }  handleClick() {    console.log('Click happened');  }  render() {    return ;  }}复制代码
  1. 类属性(第三阶段提案)
class Foo extends Component {  // Note: this syntax is experimental and not standardized yet.  handleClick = () => {    console.log('Click happened');  }  render() {    return ;  }}复制代码
  1. 在Render中的绑定
class Foo extends Component {  handleClick() {    console.log('Click happened');  }  render() {    return ;  }}复制代码

注意:在render方法中使用Function.prototype.bind会在每次组件渲染时创建一个新的函数,可能会影响性能。

  1. 在Render中的箭头函数
class Foo extends Component {  handleClick() {    console.log('Click happened');  }  render() {    return ;  }}复制代码

注意:在render方法中使用箭头函数也会在每次组件渲染时创建一个新的函数,可能会影响性能。

如何传递参数给事件处理器或回调?

  1. 可以使用箭头函数包裹事件处理器,并传递参数:
  1. 以上代码和调用.bind是等价的:
复制代码
  1. 通过data-属性传递参数
const A = 65 // ASCII character codeclass Alphabet extends React.Component {  constructor(props) {    super(props);    this.handleClick = this.handleClick.bind(this);    this.state = {      justClicked: null,      letters: Array.from({length: 26}, (_, i) => String.fromCharCode(A + i))    };  }  handleClick(e) {    this.setState({      justClicked: e.target.dataset.letter    });  }  render() {    return (      
Just clicked: {this.state.justClicked}
    {this.state.letters.map(letter =>
  • {letter}
  • )}
) }}复制代码

转载地址:http://pahba.baihongyu.com/

你可能感兴趣的文章
C# .NET学习在线资源备忘 .
查看>>
爬取微信公众号文章
查看>>
公众号python
查看>>
Base64编码原理分析
查看>>
关于自增、自减运算(vc++6.0)
查看>>
浏览器字体渲染
查看>>
因子分析——建立载荷矩阵
查看>>
asp.net mvc应用架构的思考--Unity的应用及三层代码
查看>>
学JS的心路历程-for of和for in
查看>>
linux终端中最漂亮的几款字体介绍及安装
查看>>
git
查看>>
关于点击率模型,你知道这三点就够了
查看>>
LintCode_372 在O(1)时间复杂度删除链表节点
查看>>
CCF NOI1073 放苹果
查看>>
I00031 Look-and-say sequence
查看>>
Project Euler Problem 19 Counting Sundays
查看>>
python 判断质数还是合数
查看>>
加快建设泛在电力物联网:万物互联 驶向数字经济蓝海
查看>>
OSGI企业应用开发(十一)Bundle资源获取途径
查看>>
使用HTML5拍照
查看>>