Я пытаюсь создать веб-приложение React (v 16.13.0). Я хочу, чтобы компонент сообщения fla sh отображал состояние после отправки формы. Если уже есть что-то стандартное, это было бы предпочтительнее, но поскольку я ничего не могу найти, я пытаюсь свернуть свое собственное, используя это - https://medium.com/@jaouad_45834 / building-a-fla sh -message -компонент с реакцией- js -6288da386d53 . Вот компонент
import React, { useEffect, useState } from 'react';
import Bus from '../Utils/Bus';
import './index.css';
export const Flash = () => {
let [visibility, setVisibility] = useState(false);
let [message, setMessage] = useState('');
let [type, setType] = useState('');
useEffect(() => {
Bus.addListener('flash', ({message, type}) => {
setVisibility(true);
setMessage(message);
setType(type);
setTimeout(() => {
setVisibility(false);
}, 4000);
});
}, []);
useEffect(() => {
if(document.querySelector('.close') !== null) {
document.
querySelector('.close').
addEventListener('click', () => setVisibility(false));
}
})
return (
visibility && <div className={`alert alert-${type}`}>
<span className="close"><strong>X</strong></span>
<p>{message}</p>
</div>
)
}
Проблема в том, что веб-сайт использует пользовательский код, но не показывает исходный код для
Bus.addListener('flash', ({message, type}) => {
setVisibility(true);
setMessage(message);
setType(type);
setTimeout(() => {
setVisibility(false);
}, 4000);
});
, поэтому мой вопрос заключается в том, как добавить прослушиватель событий в компонент React?
Редактировать: В ответ на данный ответ я создал этот файл ...
localhost:client davea$ cat src/Utils/Bus.js
import EventEmitter from 'events';
export default new EventEmitter();
, но перекомпиляция моего модуля приводит к этому ошибка ...
./src/components/Flash/index.js
Module not found: Can't resolve '../Utils/Bus' in '/Users/davea/Documents/workspace/chicommons/maps/client/src/components/Flash'
Это первые строки файла выше. Обратите внимание на второй «импорт», где я импортирую «Автобус» ...
import React, { useEffect, useState } from 'react';
import Bus from '../Utils/Bus';
import './index.css';
export const Flash = () => {