Почему в React.js нам не нужно передавать параметры обработчикам событий? - PullRequest
1 голос
/ 19 сентября 2019

Например, в компоненте рендеринга REACT , если бы мне нужно было передать аргумент, он бы выглядел так:

<button onClick={() => this.doSomething(**passed in parameter**)}>Press me!</button>

Это работает нормально.Но почему вам не нужно сначала указывать его как параметр в функции жирной стрелки?Как это:

<button onClick={(**PARAMETER PASSED IN HERE FIRST**) => this.doSomething(**SAME PARAMETER PLACED HERE**)}>Press me!</button>

1 Ответ

1 голос
/ 19 сентября 2019

См. Область применения :

// (a,b) are parameters passed by `Component` to `onClick` handler.
<Component onClick={(a,b) => this.doSomething(d)}/>

// Simple class example
class App extends React.Component {

  doSomething = (a,b) => {
    console.log('a',a,'b',b);
  }

  render() {
//                    onClick={this.doSomething}
    return <Component onClick={(a,b) => this.doSomething(a,b)}/>
  }
}

class Component extends React.Component {

  coolClick = () => {
    this.props.doSomething('hello','world')
  }

  render() {
    return <button onClick={this.coolClick}>Active doSomething</button>
  }
}

// d is a parameter available in the current scope
<Component onClick={() => this.doSomething(d)}

// Simple examples of possible scopes
import { d } from './consts'

const d = 5;

class App extends React.Component {

  doSomething = (x) => {
    console.log('x',x);
  }

  render() {
    const d = 5;
    return <Component onClick={() => this.doSomething(d)}/>
  }
}
...