我想在一个组件中创建一个自定义事件,并在另一个组件中添加一个事件侦听器。正在侦听事件的组件包含一个我想要在事件上执行的函数。以下是我已经在两个组成部分,我只是觉得我在错误的方式去这个...调度和侦听不同组件中的事件 - reactjs
组件#1
toggleWidget() {
const event = new CustomEvent('sliderClicked', {
bubbles: true,
});
const sliderToggle = document.getElementById('input');
sliderToggle.dispatchEvent(event);
this.setState({
checked: !this.state.checked,
});
}
/* and then in my render... */
render() {
const displaySlider = this.state.isSliderDisplayed ? (
<div className="slider-container" >
<label className="switch" htmlFor="input">
<input type="checkbox" checked={this.state.checked} onChange={this.toggleWidget} id="input" />
<span className="slider round" />
</label>
<p className="batch-slider-title"> Batch Widget </p>
</div>) : null;`
组件两个
window.addEventListener('sliderClicked', this.refreshLayout);`
任何想法,我可能做错了什么?
谢谢!所以,我会保持addEventListener,因为它是在组件二? –
如果他们根本不相关,答案是肯定的。如果他们是相关的 - 你应该使用道具来传递事件(通过@jonahe检查答案是一个例子)。这真的取决于你想做什么。 – Dekel
是的,它们根本就没有关系,我只是希望该组件监听事件并在事件上触发refreshLayout()函数,并且无论出于何种原因,即使更改它仍然无效(* sigh *) 。感谢您的时间!! –