绑定时使用箭头函数

  1. class App extentds Component {
  2. state = {
  3. count: 0
  4. }
  5. onClick(){
  6. this.setState({
  7. count: this.state.count + 1
  8. })
  9. }
  10. render(){
  11. return (
  12. <div>
  13. <p>{this.state.count}</p>
  14. <button onClick={() => this.onClick()}></button>
  15. </div>
  16. )
  17. }
  18. }

bind

  1. class App extentds Component {
  2. constructor(props){
  3. super(props);
  4. this.state = {
  5. count: 0
  6. }
  7. this.onClick = this.onClick.bind(this); // 实例上的 onClick 指向原型上的 onClick 并改变 this 的指向
  8. }
  9. onClick(){
  10. this.setState({
  11. count: this.state.count + 1
  12. })
  13. }
  14. render(){
  15. return (
  16. <div>
  17. <p>{this.state.count}</p>
  18. <button onClick={ this.onClick }></button>
  19. </div>
  20. )
  21. }
  22. }

public class fields 语法 ES7

  1. class App extentds Component {
  2. state = {
  3. count: 0
  4. }
  5. // 使用箭头函数在类中定义,会把方法定义至实例上
  6. onClick = () => {
  7. this.setState({
  8. count: this.state.count + 1
  9. })
  10. }
  11. render(){
  12. return (
  13. <div>
  14. <p>{this.state.count}</p>
  15. <button onClick={ this.onClick }></button>
  16. </div>
  17. )
  18. }
  19. }