Rumah
hujung hadapan web
tutorial js
Menyediakan Pemberitahuan Tersuai Toast dalam React dengan Jenis Tertentu dan API Konteks



Menyediakan Pemberitahuan Tersuai Toast dalam React dengan Jenis Tertentu dan API Konteks
Jul 23, 2024 pm 06:38 PMPersediaan Konteks
src/context/ToastContext.js
import { createContext, useCallback, useContext, useEffect, useState } from "react"; const CreateAlertBox = createContext(); export const useCreateAlert = () => useContext(CreateAlertBox); const AlertType = ['error', 'success', 'info', 'warning']; export const CreateAlertBoxProvider = ({ children }) => { const [alert, setAlert] = useState([]); const createAlert = useCallback((message, type = 'warning') => { if (!AlertType.includes(type)) return; setAlert((prevAlert) => [ ...prevAlert, { id: Date.now(), message, type } ]) }, []) const removeAlert = useCallback((id) => { setAlert((prevAlert) => prevAlert.filter((alert) => alert.id !== id)); }, []) return ( <CreateAlertBox.Provider value={{ createAlert, removeAlert }}> {children} <div className="toast-container"> { alert.map((alert) => ( <div key={alert.id} className={`toast toast-${alert.type}`}> {alert.message} <button onClick={() => removeAlert(alert.id)}>X</button> </div> )) } </div> </CreateAlertBox.Provider> ) }
Salin selepas log masuk
CSS untuk Pemberitahuan Roti Bakar
/* src/styles/toast.css */
.toast-container { position: fixed; top: 1rem; right: 1rem; z-index: 9999; } .toast { background-color: #333; color: #fff; padding: 1rem; margin-bottom: 1rem; border-radius: 4px; display: flex; align-items: center; justify-content: space-between; } .toast-info { background-color: #007bff; } .toast-success { background-color: #28a745; } .toast-warning { background-color: #ffc107; } .toast-error { background-color: #dc3545; } .toast button { background: none; border: none; color: #fff; cursor: pointer; margin-left: 1rem; }
Salin selepas log masuk
Menyediakan Konteks Roti Bakar
// src/main.js
import React from 'react' import ReactDOM from 'react-dom/client' import App from './App.jsx' import './index.css' import { RouterProvider } from 'react-router-dom' import { router } from './router.jsx' import { CreateAlertBoxProvider } from './context/toastcontext.jsx' ReactDOM.createRoot(document.getElementById('root')).render( <React.StrictMode> <CreateAlertBoxProvider> <RouterProvider router={router}> <App /> </RouterProvider> </CreateAlertBoxProvider> </React.StrictMode>, )
Salin selepas log masuk
Menggunakan Konteks Roti Bakar dalam Komponen
import React, { useContext, useEffect } from 'react' import { UserContext } from '../context/usercontext' import { useCreateAlert } from '../context/toastcontext' const Profile = () => { const { user } = useContext(UserContext) const { createAlert } = useCreateAlert(); const showToast = () => { try { createAlert("Deal created successfully", 'success') } catch (error) { createAlert('This is an info toast!', 'error'); } }; return ( <div className="App"> <p>Hello Profile</p> <button onClick={showToast}>Show Toast</button> </div> ) } export default Profile
Salin selepas log masuk
Atas ialah kandungan terperinci Menyediakan Pemberitahuan Tersuai Toast dalam React dengan Jenis Tertentu dan API Konteks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Artikel Panas
Berapa lama masa yang diperlukan untuk mengalahkan fiksyen berpecah?
3 minggu yang lalu
By DDD
Repo: Cara menghidupkan semula rakan sepasukan
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Kesukaran mengemas kini caching laman web akaun rasmi: Bagaimana untuk mengelakkan cache lama yang mempengaruhi pengalaman pengguna selepas kemas kini versi?
3 minggu yang lalu
By 王林
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌

Alat panas Tag

Artikel Panas
Berapa lama masa yang diperlukan untuk mengalahkan fiksyen berpecah?
3 minggu yang lalu
By DDD
Repo: Cara menghidupkan semula rakan sepasukan
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Kesukaran mengemas kini caching laman web akaun rasmi: Bagaimana untuk mengelakkan cache lama yang mempengaruhi pengalaman pengguna selepas kemas kini versi?
3 minggu yang lalu
By 王林
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ganti aksara rentetan dalam javascript

jQuery mendapatkan padding/margin elemen

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom
