2016-06-09 1 views
0

У меня есть простая компоновка компонентов, и я пытаюсь выяснить, как передать распространение события param и stop в том же обработчике. В связанном примере я хотел бы передать число, связанное с квадратом, вместе с обработчиком кликов, предотвратить поведение по умолчанию по умолчанию и использовать число, чтобы увеличить счетчик. Каждый метод, который я пытаюсь передать по дополнительным параметрам, останавливает e.preventDefault() от предотвращения поведения по умолчанию.Как передать реквизит и прекратить распространение события в React с помощью ES2015?

http://codepen.io/anon/pen/JKGKBz?editors=0010

ответ

2

Просто передать значение и событие функции handleClick.

Что-то вроде этого

handleClick(number,e) { 
    e.preventDefault(); 
    this.setState({total: this.state.total + number}) 
    } 

render() { 
    return (
     <div> 
     <h1>{this.state.total}</h1> 
     {[0,1,2,3,4].map((number) => { 
     return (
     <a href="/" onClick={(e) => this.handleClick(number,e)}>{number}</a> 
     ) 
    })} 
     </div> 
    ) 
} 

jsfiddle

или

handleClick(number,e) { 
    e.preventDefault(); 
    this.setState({total: this.state.total + number}) 
} 

render() { 
    return (
     <div> 
     <h1>{this.state.total}</h1> 
     {[0,1,2,3,4].map((number) => { 
     return (
     <a href="/" onClick={this.handleClick.bind(this,number)}>{number}</a> 
     ) 
    })} 
     </div> 
    ) 
} 

jsfiddle

+0

так, это работает - то, что я пропускал проходил событие в обработчик. Почему мне нужно включить 'e' в (e) => {}, а не просто указывать его в параметрах? Я думаю, это мое понимание. Благодаря! – motleydev

+0

, потому что SyntheticEvent передается функции обработчика событий, в этом случае (e) => {}. Я добавил второй способ передать параметры без использования функции внутри вашего события onClick. – QoP

Смежные вопросы