用到的第三方库 hy-event-store
import {HYEventBus} from "hy-event-store"
const eventBus = new HYEventBus()
export default eventBus
//事件总线
import React, { Component } from 'react'
import Home from './Home'
import eventBus from './utils/event-bus'
export class App extends Component {
constructor(){
super()
this.state = {
name:"",
age:0,
height:0
}
}
componentDidMount(){
eventBus.on("bannerPrev",this.bannerPrevClick,this) // 第三个参数可以传入一个this
eventBus.on("bannerNext",this.bannerNextClick,this)
}
bannerPrevClick(name,age,height){
// console.log(1111);
this.setState({
name,age,height
})
}
bannerNextClick(name,age,height){
this.setState({
name,age,height
})
}
componentWillUnmount(){
eventBus.off("bannerPrev",this.bannerPrevClick)
eventBus.off("bannerNext",this.bannerNextClick)
}
render() {
const {name,age,height} = this.state
return (
<div>
<p>App Compoment</p>
<i>{name}</i>
<i>{age}</i>
<i>{height}</i>
<Home/>
</div>
)
}
}
export default App
//--------------Home--------------------------------
import React, { Component } from 'react'
import HomeBanner from './HomeBanner'
export class Home extends Component {
render() {
return (
<div>
<p>Home Component</p>
<HomeBanner/>
</div>
)
}
}
export default Home
//-------------HomeBanner-----------------------
import React, { Component } from 'react'
import eventBus from './utils/event-bus';
export class HomeBanner extends Component {
prevClick(){
console.log("上一个");
eventBus.emit("bannerPrev","prev",18,1.88)
}
nextClick(){
console.log("下一个");
eventBus.emit("bannerNext","next",19,1.68)
}
render() {
return (
<div>
<h2>HomeBanner</h2>
<button onClick={()=>this.prevClick()}>上一个</button>
<button onClick={()=>this.nextClick()}>下一个</button>
</div>
)
}
}
export default HomeBanner