Я создал компонент Alert, чтобы иметь возможность отправлять оповещения от всех компонентов в приложении ReactJS, передавая его через Context.Provider. Сообщения хранятся в состоянии, а функция состояния передается в качестве значения для Context.Provider.
Однако, если я пытаюсь использовать его один раз, когда он работает, но во второй раз - нет. , Есть идеи?
Оповещение. js
import React, { useEffect, useState } from "react";
import styled from "styled-components";
const StyledDiv = styled.div`
width: 100%;
height: 30px;
font-size: 1.2em;
text-align: center;
background: tomato;
`;
const Alert = ({ message }) => {
const [visible, setVisible] = useState(false);
useEffect(() => {
if (message) {
setVisible(true);
setTimeout(() => {
setVisible(false);
}, 5000);
}
},[message]);
if (visible) {
return <StyledDiv id="alert">{message}</StyledDiv>;
} else return null;
};
export default Alert;
Приложение. js
import React, { useState, createContext } from "react";
import Alert from "./components/alert/Alert";
export const AlertContext = createContext();
function App() {
const [alert, setAlert] = useState();
return (
<>
<Alert message={alert} />
<AlertContext.Provider value={setAlert}>
COMPONENTS HERE
</AlertContext.Provider>
</>
);
}
export default App;