Redux Model создан для улучшения оригинального фреймворка Redux, который имеет сложный поток и множество шаблонных конструкций.
npm install @redux-model/react
# для 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 3+
npm install @redux-model/vue
# для Vue 2+
npm install @redux-model/vue@6.9.2
interface Response {
id: number;
name: string;
}
interface Data {
counter: number;
users: Partial<{
[key: string]: Response;
}>;
}
class TestModel extends Model<Data> {
plus = this.action((state, step: number = 1) => {
state.counter += step;
});
getUser = $api.action((id: number) => {
return this
.get<Response>(`/api/users/${id}`)
.onSuccess((state, action) => {
state.users[id] = action.response;
});
});
``````typescript
protected initialState(): Data {
return {
counter: 0,
users: {},
};
}
}
export const testModel = new TestModel();
testModel.plus();
testModel.plus(2);
testModel.getUser(3);
testModel.getUser(5).then(({ response }) => {});
const data = testModel.useData(); // { counter: number, users: object }
``````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, // логическое значение
};
};
export default connect(mapStateToProps)(App);
Здесь находится документация
Для проверки тестов выполните yarn test
Для редактирования документации выполните yarn docs
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )