reactjs – 在React事件处理程序中的值

前端之家收集整理的这篇文章主要介绍了reactjs – 在React事件处理程序中的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
由于某些原因,这在反应事件处理程序中的值被丢失。阅读文档我认为在这里做了一些反应,以确保这被设置为正确的价值

以下不符合我的预期

  1. import React from 'react';
  2.  
  3. export default class Observer extends React.Component {
  4.  
  5. handleClick() {
  6. console.log(this); //logs undefined
  7. }
  8. render() {
  9. return (
  10. <button onClick={this.handleClick}>Click</button>
  11. );
  12. }
  13. }

但是这样做:

  1. import React from 'react';
  2.  
  3. export default class Observer extends React.Component {
  4.  
  5. handleClick() {
  6. console.log(this); //logs Observer class instance
  7. }
  8. render() {
  9. return (
  10. <button onClick={this.handleClick.bind(this)}>Click</button>
  11. );
  12. }
  13. }

React和ES6对我来说是新的,但这似乎不是正确的行为?

这是JavaScript和React的正确行为,如果您使用新的类语法。

autobinding feature does not apply to ES6 classes在v0.13.0。

所以你需要使用:

  1. <button onClick={this.handleClick.bind(this)}>Click</button>

或其他技巧之一:

  1. export default class Observer extends React.Component {
  2. constructor() {
  3. super();
  4. this.handleClick = this.handleClick.bind(this);
  5. }
  6. handleClick() {
  7. /* ... */
  8. }
  9. render() {
  10. return <button onClick={this.handleClick}>Click</button>
  11. }
  12. }

猜你在找的React相关文章