Итак, я использую плагин jquery, и для его правильной работы мне нужно, чтобы кнопка моей книги (в стиле кнопки) находилась внутри тега привязки. Мой компонент реакции выглядит так:
export default class Header extends React.Component {
constructor(props){
super(props);
this.state = {
showModal: false,
};
this.openModal = this.openModal.bind(this);
this.exitModal = this.exitModal.bind(this);
}
openModal(){
console.info('hello');
this.setState(()=> ({showModal: true}));
return false;
}
exitModal(){
this.setState(()=> ({showModal: false}));
}
render(){
return (
...
<li>
<a id = "navbar-book" href = "#" onClick = {this.openModal} className = "book-button"><span>Book Now</span></a>
</li>
...
<BookModal
showModal = {this.state.showModal}
exitModal = {this.exitModal}
/>
)
}
};
Я не хочу иметь href, но если у меня его нет, мой плагин dropotron не будет работать с ним. Я уже пытался вернуть false из функции в надежде, что href не запустится. Все, что мне нужно, это запустить модальное окно.
Вы пробовали href = "javascript: void (0)"?
href = "javascript: void (0)" не работал



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как насчет того, чтобы заменить его на кнопку?
<button onClick = {this.openModal}>Book Now</button>
Вы можете использовать такую кнопку:
<button onClick = {this.openModal}>Book Now</button>
Но если вам действительно нужно использовать ссылку, вы должны использовать preventDefault в событии клика следующим образом:
openModal(event){
event.preventDefault();
this.setState(()=> ({showModal: true}));
return false;
}
Спасибо, я заменил ее на кнопку и изменил структуру макета, чтобы обойти ее. Раньше я пробовал метод предотвращения по умолчанию, но он не работал.
Насколько мне известно, вы не можете добавлять функции onClick в html через js-добавленный HTML. Я столкнулся с этим несколько лет назад (около 5-6 лет назад) и вот что сделал из этого. Если вы хотите, чтобы это работало, используйте привязки на стороне javascript, а не на стороне html.