• Giới thiệu
  • Bảo mật và Quyền riêng tư
  • Liên hệ
Wednesday, October 4, 2023
Thế giới JS & VPS
  • Trang chủ
  • Thế Giới Javascript
    • Full tài liệu học JS Free từ A-Z
    • Học javascript miễn phí
    • Javascript
    • News and Tutorial JS
    • ReactJS
    • Tips vs Tricks JS
    • VueJS
    • NodeJS
  • Thế giới VPS
    • VPS for Developer
  • Top IT
No Result
View All Result
  • Trang chủ
  • Thế Giới Javascript
    • Full tài liệu học JS Free từ A-Z
    • Học javascript miễn phí
    • Javascript
    • News and Tutorial JS
    • ReactJS
    • Tips vs Tricks JS
    • VueJS
    • NodeJS
  • Thế giới VPS
    • VPS for Developer
  • Top IT
No Result
View All Result
Thế giới JS & VPS
No Result
View All Result
Home Thế Giới Javascript Javascript

React Hooks Use Modal: Dễ dàng Mở Cửa sổ Modal trong React bằng React Hooks

by Joker
September 19, 2023
in Javascript, Thế Giới Javascript
0
0
SHARES
0
VIEWS
Share on FacebookShare on TwitterShare on Pin

Nội dung chính

  • useModal
  • Sử dụng
  • Cú pháp
    • [ModalComponent, openFunc, closeFunc, isOpenBool] = useModal(domNode?, { initialValue?, preventScroll?, focusTrapOptions?, components? })
  • Thiết lập Toàn cầu
  • Demo
  • Hướng dẫn phát triển
    • Thiết lập
    • Xây dựng src
    • Theo dõi src
    • Khởi chạy bản demo
  • Chi tiết tải về:

useModal

Đây là một react hook có thể dễ dàng mở cửa sổ modal.

Sử dụng

import React, { useState, useCallback } from 'react';
import { createRoot } from 'react-dom/client';
import { useModal } from 'react-hooks-use-modal';

const App = () => {
  const [Modal, open, close, isOpen] = useModal('root', {
    preventScroll: true,
    focusTrapOptions: {
      clickOutsideDeactivates: false,
    },
  });
  return (
    <div>
      <p>Modal is Open? {isOpen ? 'Yes' : 'No'}</p>
      <button onClick={open}>OPEN</button>
      <Modal>
        <div>
          <h1>Title</h1>
          <p>This is a customizable modal.</p>
          <button onClick={close}>CLOSE</button>
        </div>
      </Modal>
    </div>
  );
};
const root = createRoot(document.getElementById('root'));
root.render(<App />);

Cú pháp

[ModalComponent, openFunc, closeFunc, isOpenBool] = useModal(domNode?, { initialValue?, preventScroll?, focusTrapOptions?, components? })

ModalComponent Loại: React.FC<{ title?: React.ReactNode; description?: React.ReactNode, children?: React.ReactNode, additionalProps?: Record }> Thành phần modal hiển thị các thành phần con ở giữa màn hình. Nếu bạn chỉ định title và description, additionalProps, bạn phải triển khai các thành phần tùy chỉnh với tùy chọn components và hiển thị trong chúng. Xem VÍ DỤ dưới đây để biết chi tiết. https://github.com/microcmsio/react-hooks-use-modal/blob/master/examples/src/js/components-option/index.tsx

openFunc Một hàm để mở modal.

closeFunc Một hàm để đóng modal.

isOpenBool Một boolean để biết trạng thái modal có đang mở hay không.

domNode Tùy chọn. Giá trị mặc định là ‘root’. Thành phần modal sử dụng React-Portal. Bạn có thể chỉ định nút domNode đầu ra với đối số này.

initialValue Tùy chọn. Giá trị mặc định là false. Điều này hữu ích khi bạn muốn gắn modal trong tình trạng mở.

preventScroll Tùy chọn để ngăn cuộn khi modal đang mở. Giá trị mặc định là false.

focusTrapOptions Ghi đè các tùy chọn focus-trap được sử dụng bên trong. Ví dụ, để ngăn modal đóng khi một phần tử không phải modal được nhấp chuột, làm như sau

useModal('root', {
  focusTrapOptions: {
    clickOutsideDeactivates: false,
  },
});

components Tùy chọn. Đây là một tùy chọn để tùy chỉnh ModalWrapper được trả về bởi useModal. Sử dụng như sau

useModal('root', {
  components: {
    Modal: ({ title, description, children }) => {
      return (
        <div
          style={{
            padding: '60px 100px',
            backgroundColor: '#fff',
            borderRadius: '10px',
          }}
        >
          {title && <h1>{title}</h1>}
          {description && <p>{description}</p>}
          {children}
        </div>
      );
    },
    Overlay: () => {
      return (
        <div
          style={{
            position: 'fixed',
            top: 0,
            left: 0,
            bottom: 0,
            right: 0,
            backgroundColor: 'rgba(0, 0, 0, 0.5)',
          }}
        />
      );
    },
    Wrapper: ({ children }) => {
      return (
        <div
          style={{
            position: 'fixed',
            top: 0,
            left: 0,
            bottom: 0,
            right: 0,
            display: 'flex',
            justifyContent: 'center',
            alignItems: 'center',
            zIndex: 1000,
          }}
        >
          {children}
        </div>
      );
    },
  },
});

Kết hợp với ModalProvider (miêu tả ở dưới), bạn có thể chỉ định kiểu mặc định cho tất cả useModal trong dự án.

Thiết lập Toàn cầu

Thành phần ModalProvider cho phép bạn áp dụng cấu hình mặc định chung cho tất cả các useModal.

<ModalProvider {...options}>
  <Component />
</ModalProvider>

Ví dụ sau đây thiết lập tất cả các kết nối useModal để mặc định không cuộn bên ngoài modal.

const Component1 = () => {
  const [Modal] = useModal('root');
  return (
    <Modal>
      <h2>Common</h2>
    </Modal>
  );
};
const Component2 = () => {
  const [Modal] = useModal('root', { preventScroll: false }); // override
  return (
    <Modal>
      <h2>Override options</h2>
    </Modal>
  );
};

const App = () => {
  return (
    <ModalProvider preventScroll>
      <Component1 />
      <Component2 />
    </ModalProvider>
  );
};

Demo

https://microcmsio.github.io/react-hooks-use-modal/

Hướng dẫn phát triển

Thiết lập

$ yarn

Xây dựng src

$ yarn build

Theo dõi src

$ yarn watch

Khởi chạy bản demo

$ yarn start:demo

Sau đó truy cập tại http://localhost:3001/react-hooks-use-modal


Chi tiết tải về:

Tác giả: microcmsio
Nguồn: https://github.com/microcmsio/react-hooks-use-modal

Tags: javascript
Previous Post

Danh sách thả xuống Quốc gia, Tỉnh, Thành phố trong JavaScript

Next Post

Valtio: Thư viện Quản lý Trạng thái Proxy cho React

Next Post

Valtio: Thư viện Quản lý Trạng thái Proxy cho React

  • Trending
  • Comments
  • Latest
Học javascript miễn phí | Giới thiệu về toàn tập về JavaScript là gì một cách đơn giản nhất

Học javascript miễn phí | Tìm hiểu cực chi tiết và dễ hiểu về đối tượng(Objects) trong JavaScript

July 2, 2023
Học javascript miễn phí | Giới thiệu về toàn tập về JavaScript là gì một cách đơn giản nhất

Học javascript miễn phí | Tìm hiểu cực chi tiết và dễ hiểu về Hàm(function) trong JavaScript

June 28, 2023
Học javascript miễn phí | Giới thiệu về toàn tập về JavaScript là gì một cách đơn giản nhất

Học javascript miễn phí | Tìm hiểu cực chi tiết và dễ hiểu về Toán tử số học và ví dụ trong JavaScript

July 4, 2023
Học javascript miễn phí | Giới thiệu về toàn tập về JavaScript là gì một cách đơn giản nhất

Học javascript miễn phí | Tìm hiểu cực chi tiết và dễ hiểu về hàm mũi tên là gì và làm thế nào để tạo ra nó? trong JavaScript

July 6, 2023
Top IT | Top 5 xu hướng DevOps đang thịnh hành hiện nay mà các developer nên biết

Top IT | Top 5 xu hướng DevOps đang thịnh hành hiện nay mà các developer nên biết

0
TopIT | Chọn Python để phát triển web – Top 16 ưu và nhược điểm hàng đầu bạn cần biết

TopIT | Chọn Python để phát triển web – Top 16 ưu và nhược điểm hàng đầu bạn cần biết

0
TopIT | Top 16 thư viện React mà các developer nên biết

TopIT | Top 16 thư viện React mà các developer nên biết

0
TopIT | Top 17 ứng dụng web cực hay developer nên sử dụng để tăng năng suất

TopIT | Top 17 ứng dụng web cực hay developer nên sử dụng để tăng năng suất

0

Lấy Giá Trị Hàng Được Chọn Trong Bảng HTML bằng jQuery

October 2, 2023

Thêm Các Nút FAB Tuỳ Chỉnh và Thiết Kế Vật Liệu vào Ứng Dụng React Native của Bạn

October 2, 2023

Cách Tạo Một Đồng Hồ Bấm Đơn Giản bằng JavaScript

October 2, 2023

Rebass: Các thành phần giao diện người dùng nguyên thủy React được xây dựng với Styled-system

October 2, 2023

Recent News

Lấy Giá Trị Hàng Được Chọn Trong Bảng HTML bằng jQuery

October 2, 2023

Thêm Các Nút FAB Tuỳ Chỉnh và Thiết Kế Vật Liệu vào Ứng Dụng React Native của Bạn

October 2, 2023

Cách Tạo Một Đồng Hồ Bấm Đơn Giản bằng JavaScript

October 2, 2023

Rebass: Các thành phần giao diện người dùng nguyên thủy React được xây dựng với Styled-system

October 2, 2023

Thế giới Javascript vs VPS

We bring you the best News, Tutorial, Tips.v..v about Javascript language and VPS that perfect for developer full stack, Web, Backend, Newbie...to learn.

Follow Us

Top trending

  • Học javascript miễn phí
  • Javascript
  • Lập trình web
  • News and Tutorial JS
  • Thế Giới Javascript
  • Tip vs Tricks HTML/CSS
  • Tips vs Tricks JS
  • Top IT

Bài đang hot

Lấy Giá Trị Hàng Được Chọn Trong Bảng HTML bằng jQuery

October 2, 2023

Thêm Các Nút FAB Tuỳ Chỉnh và Thiết Kế Vật Liệu vào Ứng Dụng React Native của Bạn

October 2, 2023
  • Giới thiệu
  • Bảo mật và Quyền riêng tư
  • Liên hệ

© 2020 VPSUS - Share everything about Javascript and VPS by JSTEAM.

No Result
View All Result
  • Thế Giới Javascript
    • Học javascript miễn phí
    • Javascript
    • News and Tutorial JS
    • ReactJS
    • Tips vs Tricks JS
  • Thế giới VPS
    • VPS for Developer
  • Top IT

© 2020 VPSUS - Share everything about Javascript and VPS by JSTEAM.