1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/library_file_dependency-react-floatlayer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

react-floatlayer

  • На основе асинхронности
  • Поддерживает рекурсию и вызовы
  • Основан на модели публикации-подписки
  • API в форме promise
  • Полностью основан на архитектуре flux, можно использовать с библиотеками для управления данными, такими как redux или mobx

Идея дизайна

Целью разработки декоратора изначально было выделение логики написания бизнес-всплывающих компонентов. Обычно разработчики хотят, чтобы бизнес-всплывающие компоненты вызывались так же, как window.alert, и возвращали объект promise для контроля потока. Это делается для стандартизации определения всплывающих компонентов и предоставления им единого API.

Использование декоратора withFloatLayer

Декоратору требуется передать объект JSON, ключи которого будут использоваться в качестве методов вызова, а значения — для рендеринга всплывающего слоя.

import React from "react";
import {message} from "antd";
import withFloatLayer from "@yushicheng/react-floatlayer";
import TestDialog from "@/TestDialog";

@withFloatLayer({
    //callTestDialog — это метод пробуждения всплывающего окна
    callTestDialog:TestDialog
})
class TestPage extends React.Component {
    render(){
      	return (
    	<button onClick={this.handleClick}>{"Пробудить всплывающее окно"}</button>
    )};
   	handleClick=async ()=>{
        try{
            // Метод open пробуждает всплывающее окно
            await this.porps.$floatLayer.callTestDialog.open();
            // После метода open используется метод close для закрытия и уничтожения всплывающего окна
            this.porps.$floatLayer.callTestDialog.close()
        }catch(error){
            // Перехватывает исключения, выброшенные методом reject во всплывающем окне
            message.error(error.message)
        }
    };
}

export default TestPage;

Как определить всплывающий слой?

Продолжая предыдущий пример, я упростил определение TestDialog. Теперь давайте посмотрим, как мы должны определять этот всплывающий компонент.

API $promise

Имя Описание
resolve Функция-перехватчик для успешного завершения асинхронного процесса
reject Функция-перехватчик для неудачного завершения асинхронного процесса
close Специальная оболочка для внутреннего закрытия всплывающего окна
import React from "react";
import {Modal} from "antd";

/*
	Этот компонент не требует какого-либо декоратора. Определение метода похоже на дочерние компоненты в компоненте <Route> в react-router.
	Как только этот компонент помещается в декоратор withFloatLayer, объект $promise добавляется к его props для управления асинхронным процессом.
*/

export default class TestDialog extends React.Component {
    render(){
        return (
    	<Modal 
            visible={true}
            title="Тестирование всплывающего окна" 
            onOk={this.handleResolve} 
            onCancel={this.handleCancel}
        >
        	<div>{"Отображаемый контент"}</div>	
        </Modal>
    )};
    handleResolve=()=>{
        // Использует интерфейс promise в props
        this.props.$promise.resolve();
    };
	handleCancel=()=>{
      	this.props.$promise.close();  
    };
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Управление плавающим слоем на основе модели публикации и подписки. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/library_file_dependency-react-floatlayer.git
git@api.gitlife.ru:oschina-mirror/library_file_dependency-react-floatlayer.git
oschina-mirror
library_file_dependency-react-floatlayer
library_file_dependency-react-floatlayer
master