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

OSCHINA-MIRROR/geekact-redux-model

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README-EN.md 5.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 09:29 f86f7e3

Redux Model

Документация на китайском

Redux Model создан для улучшения оригинальной библиотеки Redux, которая имеет сложный поток управления и множество шаблонных конструкций.

Лицензия Статус GitHub Workflow (ветка) Codecov

Возможности

  • Модульное программирование
  • Изменение редьюсеров с использованием MVVM
  • 👍Абсолютно 100% статическая проверка типов с TypeScript
  • Предоставление HTTP-сервиса с отображением прогресса и ограничением частоты запросов
  • Поддержка хуков React/Vue
  • Поддержка сохранения состояния приложения
  • Поддержка запросов GraphQL
  • Поддержка разделения кода

Установка

React или React-Native

npm install @redux-model/react

Taro

# Для Taro 3+ версий
npm install @redux-model/taro

# Для Taro 2+ версий
npm install @redux-model/taro@6.10.0 @tarojs/redux

# Для Taro 1+ версий
npm install @redux-model/taro@6.9.5 @tarojs/redux

Vue

# Для Vue 3+ версий
npm install @redux-model/vue

# Для Vue 2+ версий
npm install @redux-model/vue@6.9.2

Определение модели

interface Ответ {
  id: number;
  имя: string;
}

interface Данные {
  счетчик: number;
  пользователи: Partial<{
    [ключ: string]: Ответ;
  }>;
}
``````typescript
class TestModel extends Model<Данные> {
  увеличить = this.action((состояние, шаг: число = 1) => {
    состояние.счетчик += шаг;
  });

  получитьПользователя = $api.action((id: число) => {
    return this
      .get<Ответ>(`/api/users/${id}`)
      .наУспешныйРезультат((состояние, действие) => {
        состояние.пользователи[id] = действие.ответ;
      });
  });

  защищённое_начальное_состояние(): Данные {
    return {
      счетчик: 0,
      пользователи: {},
    };
  }
}

экспортировать const testModel = новый TestModel();

Выполнение действия

testModel.увеличить();
testModel.увеличить(2);

testModel.получитьПользователя(3);
testModel.получитьПользователя(5).тогда(({ ответ }) => {});

Получение данных в хуках

const данные = testModel.использоватьДанные(); // { счетчик: число, пользователи: объект }

const счетчик = testModel.useData((data) => data.counter); // число
const пользователи = testModel.useData((data) => data.users); // объект

const загрузка = testModel.getUser.useLoading(); // логическое значение

Получение данных в соединении

type ReactProps = ReturnType<typeof mapStateToProps>;

const mapStateToProps = () => {
  return {
    counter: testModel.data.counter, // число
    users: testModel.data.users, // объект
    loading: testModel.getUser.loading, // логическое значение
  };
};

экспортировать default connect(mapStateToProps)(App);
```# Онлайн-демо
* [Счетчик](https://codesandbox.io/s/redux-model-react-counter-zdgjh)
* [Устойчивость](https://codesandbox.io/s/redux-model-react-persist-uwhy8)
* [Список задач](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)
* [Запрос](https://codesandbox.io/s/redux-model-react-request-1ocyn)
* [Ограничение частоты запросов](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)
* [Прослушивание](https://codesandbox.io/s/redux-model-react-listener-p7khk)
* [Композиция](https://codesandbox.io/s/redux-model-react-compose-42wrc)
* [Действие в действии](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)# Документация

Здесь находится [документация](https://redux-model.github.io/redux-model)

# Разработка
* git clone YOUR_FORK_REPO
* yarn install && yarn bootstrap

Чтобы запустить тесты, выполните `yarn test`<br>
Чтобы отредактировать документацию, выполните `yarn docs`

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/geekact-redux-model.git
git@api.gitlife.ru:oschina-mirror/geekact-redux-model.git
oschina-mirror
geekact-redux-model
geekact-redux-model
master