亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網
    最全最豐富的資訊網站

    react中可以使用事件總線嗎

    react中可以使用事件總線;react使用事件總線可以用于解決跨組件之間的事件傳遞,可以利用一個使用較多的庫events來完成對應的操作,利用npm或者yarn可以安裝events,語法為“npm install events”和“yarn add events”。

    react中可以使用事件總線嗎

    本教程操作環(huán)境:Windows10系統(tǒng)、react17.0.1版、Dell G3電腦。

    react中可以使用事件總線

    react 事件總線解決的問題:跨組件之間的事件傳遞

    在React開發(fā)中如果有跨組件之間的事件傳遞,應該如何操作?

    A、在Vue中我們可以通過Vue的實例,快速實現(xiàn)一個事件總線(EventBus),來完成操作;

    B、在React中可以依賴一個使用較多的庫 events 來完成對應的操作;

    如何實現(xiàn)

    借助第三方庫 events來實現(xiàn)

    常見的 api

    創(chuàng)建EventEmitter對象:eventBus對象

    發(fā)出事件:eventBus.emit(“事件名稱”, 參數(shù)列表)

    監(jiān)聽事件:eventBus.addListener(“事件名稱”, 監(jiān)聽函數(shù))

    移除事件:eventBus.removeListener(“事件名稱”, 監(jiān)聽函數(shù))

    使用前需要先安裝,下面兩種方式任選一個

    npm install events  yarn add events

    events實踐:

    首先新建一個文件QcEventEmitter.js,文件內容如下:

    import { EventEmitter } from 'events' class QcEventEmitter extends EventEmitter {}; export default new QcEventEmitter();

    下面將實現(xiàn)EventTest組件向Person組件傳遞事件:

    EventTest文件內容

    A、EventTest組件中引入QcEventEmitter

    B、在點擊事件中通過QcEventEmitter.emit來發(fā)送事件

    import React, { Component } from 'react'; import QcEventEmitter from 'common/utils/QcEventEmitter' class EventTest extends Component {   render() {     return (       <div>         <button onClick={e => this.btnCLick()}>測試event事件</button>       </div>     );   }   btnCLick(){     QcEventEmitter.emit('contextClick', 'Lucy', '99')   } }

    export default EventTest;

    Person文件內容

    A、Person組件中引入QcEventEmitter,

    B、在componentDidMount中通過QcEventEmitter.addListener來監(jiān)聽事件,

    C、在 componentWillUnmount中通過QcEventEmitter.removeListener移除對事件的監(jiān)聽

    import React, { Component, useContext } from 'react'; import QcEventEmitter from 'common/utils/QcEventEmitter' class Person extends Component {   componentDidMount(){     QcEventEmitter.addListener("contextClick", this.headerClick)   }   componentWillUnmount() {     QcEventEmitter.removeListener("contextClick", this.headerClick)   }   headerClick(name, age) {     console.log(name, age);   }   render() {     return (       <div>        <h2>這是Person子組件</h2>       </div>     );   } } export default Person;

    在App.js文件中渲染EventTest組件和Person組件(Person組件渲染后,就可以監(jiān)聽EventTest發(fā)出的事件了,他們之間并不需要任何依賴)

    import React from 'react'; import ContetTest from './pages/contenxt' import Person from 'pages/contenxt/person' function App() {   return (     <div className="App">       <ContetTest />       <Person />     </div>   ); } export default App;

    贊(0)
    分享到: 更多 (0)
    網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號