У меня есть код по следующему URL: https://gist.github.com/motleydev/6d5e980e4d90cc5d52fd, где я создаю настройку типа табуляции. Существует ряд вкладок, раздел содержимого, а затем еще одна строка изображений с переменным активным состоянием в зависимости от того, какая вкладка «открыта». То, что мне в конечном итоге нужно сделать, - это получить индекс вкладки, нажатой, но я не могу понять, как это сделать. Все, что мне нужно, это просто целое число. Цените любое понимание. Благодаря!Получение указателя onClick target с помощью ReactJs
ответ
Jorum solution works.
Вы также можете заменить:
handleClick: function(event){
event.preventDefault();
console.log(this);
},
render: function(){
var self = this;
var tabs = this.props.tabs.map(function(tab,index){
var clickHandler = self.handleClick;
return (<li key={'tab'+index}><a ref={'tab'+index} href="#" onClick={clickHandler} > {tab.meta.title}</a></li>)
});
return (
<nav>
<ul>
{tabs}
</ul>
</nav>
)
}
});
By:
handleClick: function(index){
event.preventDefault();
console.log(this);
},
render: function(){
var self = this;
var tabs = this.props.tabs.map(function(tab,index){
var clickHandler = self.handleClick.bind(null,index);
return (<li key={'tab'+index}><a ref={'tab'+index} href="#" onClick={clickHandler} > {tab.meta.title}</a></li>)
});
return (
<nav>
<ul>
{tabs}
</ul>
</nav>
)
}
});
, так что я собираюсь дать вам кредит, потому что это работающее решение с меньшим количеством кода, хотя я также ценю решение Jorums. Сначала я пытался использовать «вкус» этого решения, но каждый раз, когда я пытался передать «это» в первый параграф связывания вместо нулевого объекта, он продолжал говорить: «реагируйте на это, перестань делать это сами» или что-то в этом духе. почему он работает с нулевым объектом и делает ли событие просто переданным независимо? – motleydev
У меня тоже была эта проблема. Это связано с тем, что React не хочет, чтобы вы меняли контекст вызова метода (даже если вы привязываетесь к уже привязанному компоненту, который немного странный), и только привязка к null не изменяет контекст. В качестве альтернативы вы можете использовать _.partial from underscore/lodash –
Я пытаюсь использовать этот подход, и индекс проходит отлично. Однако «это» в моем обработчике кликов теперь является нулевым, и мне нужно иметь возможность установить состояние в обработчике кликов через обычные средства -> this.setState ({...}), потому что «this» имеет значение null. – eponymous23
Я не могу проверить это в настоящее время, но что-то вроде этого. В основном отправьте обратный вызов и индекс на каждую отдельную вкладку. При нажатии на вкладку выполните обратный вызов с индексом в качестве параметра:
var Tab = React.createClass({
handleClick: function (event) {
event.preventDefault();
this.props.tabClicked(this.props.index);
},
render: function() {
return (
<li>
<a href="#" onClick={this.handleClick}>Tab {this.props.index}</a>
</li>
);
}
});
var Tabs = React.createClass({
handleClick: function (index) {
console.log('Tab #' + index);
},
render: function(){
var self = this;
var tabs = this.props.tabs.map(function (tab, index) {
return (
<Tab key={index} index={index} tabClicked={this.handleClick} />
)
});
return (
<nav>
<ul>
{tabs}
</ul>
</nav>
);
}
});
Это ответ, сохраните 'данные' на элементе – neaumusic
http://stackoverflow.com/a/20383295/1487102 – neaumusic
Это правильный ответ. Также вы можете создать обертку для захвата события и передать его родительскому элементу с элементом данных. Вы можете проверить этот скрипт https://jsfiddle.net/parthapal33/cydubbxh/ –
- 1. onClick не называется ReactJS
- 2. target specific class onclick
- 3. ReactJS onClick не срабатывает
- 4. ReactJS onClick ReactCSSTransitionGroup анимация
- 5. ReactJS: onClick change element
- 6. ReactJs onClick add className
- 7. onClick in reactjs не работает
- 8. Reactjs, функция onclick - автоматический запуск
- 9. Ключ ReactJS Pass с функцией onClick
- 10. ReactJS «есть» мой атрибут onClick
- 11. ReactJS onClick в элементе списка
- 12. onClick не запускается в ReactJS
- 13. OnClick событие не вызывает reactjs
- 14. вызова нескольких функций OnClick ReactJS
- 15. Событие Trigger onClick для элемента ReactJS
- 16. ReactJS - PopUp Компонент Error: Target контейнер не является DOM элемент
- 17. Получение ошибки, связанные с Вавилонской с ReactJs
- 18. ReactJS показать/скрыть DIV с помощью кнопок
- 19. Dropdown onclick без js, php или target
- 20. получение исключения null указателя
- 21. получение нулевой ошибки указателя
- 22. ReactJS передающий объект вместо функции внутри onClick
- 23. Как передать событие в onClick в ReactJS
- 24. Как остановить SetTimeout OnClick в Reactjs
- 25. Получение Исключение нулевого указателя пожалуйста
- 26. Проблемы получение данных из JSON с ReactJS
- 27. ReactJS onClick setState к другому элементу
- 28. onClick not firing in map - ReactJS
- 29. ReactJS: Получение моего фида Instagram
- 30. reactjs Событие Onclick, отправляющее значение родительскому
Сделайте еще один компонент, который называется Tab и отправить событие Контейнер OnClick как свойство, а также индекса. Затем вы можете вызвать onClick на фактической вкладке, где вы вызываете OnClick контейнера с правильным индексом. Его грязный, но я думаю, что это сработает. – magnudae
** Я считаю, что ответ заключается в сохранении индекса в элементе HTML и извлечении с помощью e.target или e.currentTarget **, чтобы не связывать функцию каждый раз, когда происходит карта. – neaumusic
http://stackoverflow.com/a/20383295/1487102 – neaumusic