связать метод с динамическими аргументами [duplicate]

Установите width и установите margin-left и margin-right на auto. Это только для горизонтальной. Если вы хотите в обоих направлениях, вы просто сделаете это в обоих направлениях. Не бойтесь экспериментировать; это не похоже на то, что вы что-нибудь сломаете.

0
задан Roopak PutheVeettil 13 July 2018 в 08:56
поделиться

4 ответа

Попробуйте это. :)

render() {
    array.map((item,index) => <input onclick={() => this.clickHandler(item,index)} />)
}
0
ответ дан UtkarshPramodGupta 17 August 2018 в 13:18
поделиться
  • 1
    конечно, я могу это сделать. но если я возьму этот подход, мне нужно вызвать метод register clickHandler каждый раз, когда вызывается метод i render(). который повлияет на производительность, и поэтому я хочу связать его в constructor – Roopak PutheVeettil 13 July 2018 в 09:17

создать обработчик, затем вызвать его onClick prop и передать индекс оттуда.

Пример

// Creates and returns a function to be called with click event
clickHandler = index => event => {
  console.log(index)
}

<input onClick={this.clickHander(index)} />

или

clickHandler = (index, event) => {
 // handle here
}

<input onClick={() => this.clickHander(index, event)} />

использует обычные функции, если вы используете ES5

2
ответ дан Monkey D Luffy 17 August 2018 в 13:18
поделиться

Создайте вокруг него анонимную функцию, таким образом вы сможете передать аргументы своей функции

     <input onclick={() => this.clickHandler(item,index)} />   

. Если ваш компилятор не поддерживает синтаксис толщины стрелки, вы можете

     <input onclick={function() {this.clickHandler(item,index)}} />  
1
ответ дан Aseem Upadhyay 17 August 2018 в 13:18
поделиться

Вы могли бы использовать какую-то валютную функцию:

    constructor(){
      this.clickHandler = this.clickHandler.bind(this);
    }

    clickHandler(index) {
        return function(e) {
          // do click things
        }.bind(this);
    }

    render(){
      array.map(item,index)=>{
         <input onclick={this.clickHandler(index)} />   //Here i want to pass the item & index as args
      }
}

Вы действительно не можете избежать создания нового обратного вызова функции для каждого index.

1
ответ дан Davin Tryon 17 August 2018 в 13:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: