91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

React如何封裝彈出框組件

發布時間:2022-08-23 16:27:19 來源:億速云 閱讀:190 作者:iii 欄目:開發技術

這篇文章主要講解了“React如何封裝彈出框組件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“React如何封裝彈出框組件”吧!

效果圖

React如何封裝彈出框組件

React如何封裝彈出框組件

React如何封裝彈出框組件

文件目錄

React如何封裝彈出框組件

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>
    )
}

將該組件置于項目根目錄下的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 用于創建單個alert

規定傳入的參數及類型

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

傳入一個狀態success或者error,用于區別樣式

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)的技術,即使用js編寫css樣式
當HTML文檔中識別到AlertContainer標簽時,會轉變為具有對應樣式的div標簽

use.tsx 函數式調用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)

    }
}

使用類編寫對用的函數,是因為類是存儲數據比較好的辦法,AlertList .list存儲著彈出框容器中所有彈出框的信息,AlertList.el為彈出框容器的節點
showAlert的邏輯:

1.查看AlertList.el是否有值,如果沒有則創建創建節點

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

3.渲染彈出框列表

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

感謝各位的閱讀,以上就是“React如何封裝彈出框組件”的內容了,經過本文的學習后,相信大家對React如何封裝彈出框組件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永仁县| 宁海县| 重庆市| 乐山市| 长沙市| 兴安盟| 融水| 望谟县| 安吉县| 阳东县| 巴彦淖尔市| 松潘县| 淄博市| 泸水县| 克什克腾旗| 曲松县| 三河市| 江阴市| 吉安市| 眉山市| 旬阳县| 循化| 淳安县| 衢州市| 珲春市| 庆云县| 福州市| 临西县| 乳源| 兴文县| 临清市| 哈巴河县| 桂平市| 海南省| 永济市| 金堂县| 淳安县| 曲水县| 潞城市| 拉孜县| 金秀|