最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React封裝彈出框組件的方法

 更新時(shí)間:2022年08月23日 15:21:21   作者:TA_WORLD  
這篇文章主要為大家詳細(xì)介紹了React封裝彈出框組件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了React封裝彈出框組件的方法,供大家參考,具體內(nèi)容如下

效果圖

文件目錄

alertList.tsx 用于容納彈出框的容器

import React from "react";

export const HAlertList = () => {
? ? return (
? ? ? ? <div
? ? ? ? ? ? id="alert-list"
? ? ? ? ? ? style={{
? ? ? ? ? ? ? ? position:'fixed',
? ? ? ? ? ? ? ? top: '6%',
? ? ? ? ? ? ? ? left: '50%',
? ? ? ? ? ? ? ? transform: `translate(-50%)`
? ? ? ? ? ? }}
? ? ? ? ></div>
? ? )
}

將該組件置于項(xiàng)目根目錄下的index.tsx

export const root = ReactDOM.createRoot(
? document.getElementById('root') as HTMLElement
);
root.render(
? // <React.StrictMode>
? <>
? ? <Provider store={store}>
? ? ? <BrowserRouter>
? ? ? ? <App />
? ? ? ? <HAlertList/>
? ? ? </BrowserRouter>
? ? </Provider>
? </>
? // </React.StrictMode>
);

index.tsx 用于創(chuàng)建單個(gè)alert

規(guī)定傳入的參數(shù)及類型

export interface HAlertProps {
? ? status:'success' | 'error',
? ? text:string
}

傳入一個(gè)狀態(tài)success或者error,用于區(qū)別樣式

export const HAlert = (props:HAlertProps) => {
? ? return (
? ? ? ? <AlertContainer status={props.status}>
? ? ? ? ? ? {props.text}
? ? ? ? </AlertContainer>
? ? )
}


const AlertContainer = styled.div<{
? ? status:string
}>`
? ? width: 65vw;
? ? height: 30px;
? ? background-color: ${props => props.status === 'success' ? '#a8dda8' : '#ff4b4b'};
? ? text-align: center;
? ? margin-bottom: 10px;
`

此處使用emotion(css-in-js)的技術(shù),即使用js編寫css樣式
當(dāng)HTML文檔中識(shí)別到AlertContainer標(biāo)簽時(shí),會(huì)轉(zhuǎn)變?yōu)榫哂袑?duì)應(yīng)樣式的div標(biāo)簽

use.tsx 函數(shù)式調(diào)用alert組件

import React, { useState } from 'react'
import ReactDOM from 'react-dom/client'
import { HAlertProps, HAlert } from './index'

export class AlertList {
? ? static list: HAlertProps[] = []
? ? static el: ReactDOM.Root | null = null
? ? static showAlert = (props: HAlertProps) => {
? ? ? ? let container: ReactDOM.Root
? ? ? ? if (AlertList.el) {
? ? ? ? ? ? container = AlertList.el
? ? ? ? } else {
? ? ? ? ? ? AlertList.el = container = ReactDOM.createRoot(
? ? ? ? ? ? ? ? document.getElementById('alert-list') as HTMLElement
? ? ? ? ? ? )
? ? ? ? }

? ? ? ? AlertList.list.push(props)
? ? ? ? container.render(
? ? ? ? ? ? <>
? ? ? ? ? ? ? ? {AlertList.list.map((value: HAlertProps, index: number) => {
? ? ? ? ? ? ? ? ? ? return <HAlert {...value} key={index} />
? ? ? ? ? ? ? ? })}
? ? ? ? ? ? </>
? ? ? ? )
? ? ? ? setTimeout(() => {
? ? ? ? ? ? AlertList.list.shift()
? ? ? ? ? ? container.render(
? ? ? ? ? ? ? ? <>
? ? ? ? ? ? ? ? ? ? {AlertList.list.map((value: HAlertProps, index: number) => {
? ? ? ? ? ? ? ? ? ? ? ? return <HAlert {...value} key={index} />
? ? ? ? ? ? ? ? ? ? })}
? ? ? ? ? ? ? ? </>
? ? ? ? ? ? )
? ? ? ? }, 2000)

? ? }
}

使用類編寫對(duì)用的函數(shù),是因?yàn)轭愂谴鎯?chǔ)數(shù)據(jù)比較好的辦法,AlertList .list存儲(chǔ)著彈出框容器中所有彈出框的信息,AlertList.el為彈出框容器的節(jié)點(diǎn)
showAlert的邏輯:

1.查看AlertList.el是否有值,如果沒有則創(chuàng)建創(chuàng)建節(jié)點(diǎn)

2.將該HAlert組件的信息存入AlertList .list

3.渲染彈出框列表

4.開啟定時(shí)器(此處寫的不是特別好),每隔2s取消一個(gè)HAlert

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • React 中常用的幾種路由跳轉(zhuǎn)方式小結(jié)

    React 中常用的幾種路由跳轉(zhuǎn)方式小結(jié)

    基本路由跳轉(zhuǎn)是最常見的一種方式,下面介紹React 中常用的幾種路由跳轉(zhuǎn)方式,感興趣的朋友一起看看吧
    2023-12-12
  • 利用ES6語法重構(gòu)React組件詳解

    利用ES6語法重構(gòu)React組件詳解

    這篇文章主要介紹了利用ES6語法重構(gòu)React組件的相關(guān)資料,文中通過示例代碼介紹的很詳細(xì),對(duì)大家具有一定的參考借鑒價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • React在Dva項(xiàng)目中創(chuàng)建并引用頁面局部組件的方式

    React在Dva項(xiàng)目中創(chuàng)建并引用頁面局部組件的方式

    這篇文章主要介紹了React在Dva項(xiàng)目中創(chuàng)建并引用頁面局部組件的方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • React中Provider組件詳解(使用場景)

    React中Provider組件詳解(使用場景)

    這篇文章主要介紹了React中Provider組件使用場景,使用Provider可以解決數(shù)據(jù)層層傳遞和每個(gè)組件都要傳props的問題,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • React?中hooks之?React.memo?和?useMemo用法示例總結(jié)

    React?中hooks之?React.memo?和?useMemo用法示例總結(jié)

    React.memo是一個(gè)高階組件,用于優(yōu)化函數(shù)組件的性能,通過記憶組件渲染結(jié)果來避免不必要的重新渲染,合理使用React.memo和useMemo可以顯著提升React應(yīng)用的性能,本文介紹React?中hooks之?React.memo?和?useMemo用法總結(jié),感興趣的朋友一起看看吧
    2025-01-01
  • React中 Zustand狀態(tài)管理庫的使用詳解

    React中 Zustand狀態(tài)管理庫的使用詳解

    Zustand?是一個(gè)非常輕量、簡潔的狀態(tài)管理庫,旨在為 React 提供簡便且高效的狀態(tài)管理,相比于 Redux 或 Context API,Zustand 具有更簡潔、靈活和易于理解的優(yōu)點(diǎn),感興趣的朋友一起看看吧
    2024-12-12
  • 基于React實(shí)現(xiàn)倒計(jì)時(shí)功能

    基于React實(shí)現(xiàn)倒計(jì)時(shí)功能

    這篇文章主要為大家詳細(xì)介紹了如何基于React實(shí)現(xiàn)倒計(jì)時(shí)功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2024-02-02
  • 詳解三種方式在React中解決綁定this的作用域問題并傳參

    詳解三種方式在React中解決綁定this的作用域問題并傳參

    這篇文章主要介紹了詳解三種方式在React中解決綁定this的作用域問題并傳參,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 詳解React路由傳參方法匯總記錄

    詳解React路由傳參方法匯總記錄

    這篇文章主要介紹了詳解React路由傳參方法匯總記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • redux功能強(qiáng)大的Middleware中間件使用學(xué)習(xí)

    redux功能強(qiáng)大的Middleware中間件使用學(xué)習(xí)

    這篇文章主要為大家介紹了redux功能強(qiáng)大的Middleware中間件使用學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論

博湖县| 富平县| 崇明县| 南开区| 苗栗市| 阆中市| 饶河县| 寿阳县| 息烽县| 砀山县| 开原市| 云林县| 东城区| 大悟县| 平安县| 临沂市| 吉木乃县| 滦南县| 江津市| 阿拉善右旗| 霍山县| 甘肃省| 普兰店市| 黔南| 乌兰察布市| 海原县| 白沙| 弥勒县| 三亚市| 安丘市| 绥滨县| 会同县| 崇义县| 安平县| 山西省| 色达县| 盘山县| 信丰县| 马山县| 育儿| 奉化市|