Установите width
и установите margin-left
и margin-right
на auto
. Это только для горизонтальной. Если вы хотите в обоих направлениях, вы просто сделаете это в обоих направлениях. Не бойтесь экспериментировать; это не похоже на то, что вы что-нибудь сломаете.
Попробуйте это. :)
render() {
array.map((item,index) => <input onclick={() => this.clickHandler(item,index)} />)
}
создать обработчик, затем вызвать его 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
Создайте вокруг него анонимную функцию, таким образом вы сможете передать аргументы своей функции
<input onclick={() => this.clickHandler(item,index)} />
. Если ваш компилятор не поддерживает синтаксис толщины стрелки, вы можете
<input onclick={function() {this.clickHandler(item,index)}} />
Вы могли бы использовать какую-то валютную функцию:
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
.
clickHandler
каждый раз, когда вызывается метод irender()
. который повлияет на производительность, и поэтому я хочу связать его вconstructor
– Roopak PutheVeettil 13 July 2018 в 09:17