이벤트 버스는 이벤트 버스를 사용하여 구성 요소 간 이벤트 전송을 해결합니다. 일반적으로 사용되는 라이브러리 이벤트를 사용하여 해당 작업을 완료할 수 있습니다. 구문은 다음과 같습니다. "npm 설치 이벤트" 및 "원사 추가 이벤트".
이 튜토리얼의 운영 환경: Windows 10 시스템, 반응 버전 17.0.1, Dell G3 컴퓨터.
React 이벤트 버스로 해결되는 문제: 컴포넌트 간의 이벤트 전송
React 개발에서 컴포넌트 간 이벤트 전송이 있다면 어떻게 해야 할까요?
A. Vue 인스턴스를 통해 이벤트 버스(EventBus)를 신속하게 구현하여 작업을 완료할 수 있습니다.
B. React에서는 일반적으로 사용되는 라이브러리 이벤트를 사용하여 해당 작업을 완료할 수 있습니다.
구현 방법
타사 라이브러리 이벤트를 사용하여 구현Common api
EventEmitter 객체 생성: eventBus 객체이벤트 발행: eventBus.emit("이벤트 이름", 매개변수 목록) 이벤트 듣기 : eventBus.addListener("이벤트 이름", 듣기 기능)이벤트 제거: eventBus.removeListener("이벤트 이름", 듣기 기능)사용하기 전에 다음 두 가지 방법 중 하나를 선택해야 합니다.npm install events yarn add events
import { EventEmitter } from 'events' class QcEventEmitter extends EventEmitter {}; export default new QcEventEmitter();
A. EventTest 컴포넌트에 QcEventEmitter를 도입하세요B. 클릭 이벤트에서는 QcEventEmitter.emit
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') } }
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;
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;
javascript 비디오 튜토리얼, web front-end]
위 내용은 반응에 이벤트 버스를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!