Функциональный вызов компонента пользовательского интерфейса из другого файла — NextJS

#reactjs #next.js

#reactjs #next.js

Вопрос:

Я пытаюсь использовать компонент глобального оповещения для моего приложения NextJS.Затем я могу импортировать этот компонент и использовать его везде, где захочу. Ниже приведен мой компонент уведомлений и место, которое я пытаюсь использовать.Он показывает журналы консоли, но не показывает предупреждение.

notificationBar.js

 export const Notification = (status, message) => {
   
        console.log("status -->", status)
        if (status === "success") {
            console.log("success --->", message)
            return (
                <div className="alert alert-success">{message}</div>
            );
        } else if (status === "error") {
            return (
                <div className="alert alert-danger">{message}</div>
            );
        } else {
            return null
        }  
}
  

Home.js

 import  {Notification}  from '../components/notificationBar';

const Home = () => {

 const notify = async ()=>{
         Notification("success", "you have won");
    }

return(
 <div>
  <button onClick={()=>notify()}>Click me</button>
 </div>
 )
}

export default Home
  

Комментарии:

1. в настоящее время вы возвращаете компонент из обработчика щелчков

2. @Davin Tryon Да. я хочу показать свое предупреждение, как только пользователь нажмет эту кнопку

Ответ №1:

Вам нужно определить в корневом элементе область, куда помещать эти сообщения, это может быть портал react, здесь вы можете найти пример: https://github.com/vercel/next.js/tree/canary/examples/with-portals