标签: state-management

Python 是否有像 Mobx 这样的响应式状态库?

我正在寻找像Mobx for Python 这样的响应式状态库,即位于 Web 应用程序的服务器端而不是客户端。

Mobx 与像RxPY这样的经典反应式库类似,但有不同的重点:它不太关注低级事件调度,而是对数据更改做出反应,重新计算派生值(但仅限于那些受影响的值,并且对非观察到的相关值)。Mobx 自动确定计算值的依赖关系。

此外,Vue框架内置了此类功能,具有更好的语法,与框架紧密相关,具有优点(也有缺点)。

唉,两者都是 JavaScript 并且针对客户端/用户界面。

所以我的具体问题是:

  • Python 有类似的反应式状态库吗?
  • 这些是否提供了在文件中存储/观察数据的集成?
    • (这本质上是一个基于 inotify 的构建系统,但更细粒度、更灵活。)
  • 这些是否提供与关系数据库的集成?
    • (是的,存在一个需要弥合的概念差距,并且它可能仅在单个服务器实例访问数据库时才有效。它对于广泛的应用程序仍然非常有用。)
  • 这些是否提供与网络服务器框架的集成?
    • (即收到的 HTTP 请求触发状态更改和重新计算,一些计算值是 JSON 结构,客户端通过 Web 套接字、长轮询或消息传递系统观察到这些值。)

python messaging webserver state-management reactive-programming

6
推荐指数
1
解决办法
1227
查看次数

如何使用Angular CLI + ng-packagr + state mgmt构建Angular 4组件库?

试图围绕创建一个具有状态mgmt Ngrx的角度节点模块.

我一直在使用本指南构建节点模块:https://medium.com/@nikolasleblanc/building-an-angular-4-component-library-with-the-angular-cli-and-ng-packagr-53b2ade0701e

目前坚持引入ngrx子状态,所以当我从NPM我的模块下载时,我可以某种方式定义为我的主应用程序状态mgmt的一部分.

据我了解,我可以以某种方式做到这一点,使用/设置ModuleWithProviders

state-management node-modules ngrx angular

6
推荐指数
1
解决办法
671
查看次数

React hooks:它们对共享状态管理有用吗,比如Redux?

有关于React钩子的炒作.太多的信息,我仍然不知道:钩子的出现是否意味着像Redux这样的库可以被扔到垃圾箱里?

到目前为止,我所理解的是钩子对于有状态的功能组件是有益的,共享状态呢?

state-management reactjs redux react-hooks

6
推荐指数
1
解决办法
4733
查看次数

WPF 应用程序的标准应用程序状态管理

[免责声明:我来自前端、react/Angular 世界,我使用 redux/ngrx 进行状态管理。]

\n\n

WPF 应用程序中是否有一些管理应用程序状态的标准方法?

\n\n

我\xe2\x80\x99见过一些内置命令的使用。另一方面,我\xe2\x80\x99见过Redux.NET库。

\n\n

对于其中一个项目,我需要对应用程序状态管理做出决定,并且 i\xe2\x80\x99d 喜欢采用某种标准方法。

\n\n

那么,是否有一个单一的标准方法或者可能是最常用的 3 种方法的列表?

\n

wpf state-management

6
推荐指数
0
解决办法
3010
查看次数

多块构建器

这是情况——

我的 Flutter 应用仪表板屏幕有两个单独的列表

  1. 页面视图在顶部和
  2. 项目清单

在此处输入图片说明

我有一个名为dashboard_bloc 和dashboard_event 的块,有两个单独的事件来分别获取pageView 数据和列表项数据以及dashboard_state。

这就是我开始的方式。

    void initState() {
    // TODO: implement initState
    super.initState();
    _dashboardBloc = DashboardBloc(repository: ProductRepositoryImpl());
    _dashboardBloc.add(FetchHomeProductsEvent(token: token, productId: "1"));
    _dashboardBloc.add(FetchProductsEvent(token: token));
  }

    Widget build(BuildContext context) {
    return Scaffold(
      body: BlocProvider(
        create: (context) => _dashboardBloc,
        child: SingleChildScrollView(
          child: Column(
            children: <Widget>[
              Container(
                child: BlocBuilder<DashboardBloc, DashboardState>(
                    bloc: _dashboardBloc,
                    builder: (context, state) {
                      if (state is DashboardLoadingState) {
                        return buildLoading();
                      } else if (state is DashboardErrorState) {
                        return buildErrorUi(state.message);
                      } else if (state is DashboardLoadedState) …
Run Code Online (Sandbox Code Playgroud)

state-management dart flutter bloc

6
推荐指数
1
解决办法
4432
查看次数

具有嵌套数据结构的 Flutter BloC

我有一个嵌套结构,如下所示:

List<Areas>
|-- List<Topics>
|   |-- List<Exercises>
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序的工作流程:

  1. 应用程序已打开
  2. 获取API并显示列表Areas
  3. 用户选择Area并转到下一个屏幕
  4. 获取API并显示主题列表
  5. 用户选择Topic并转到下一个屏幕
  6. 获取API并显示练习列表
  7. 用户需要完成所有这些

我开始使用BloC,但我不确定是否应该对每种类型的数据使用一个 Bloc(因此一个 bloc for Areas,另一个 for Topics,另一个 for Exercises)或仅在一个 Bloc 中处理整个结构。

我看到一个问题,其中State包含整个结构,并且每次从 中获取嵌套列表时都需要更新API。也许这会导致内存问题?

另一方面,每种数据类型都有一个 Bloc 将使它们之间的通信变得复杂。

state management如果更有意义的话,我也愿意改用另一种技术。

任何帮助,将不胜感激。

多谢。

nested hierarchical state-management flutter bloc

6
推荐指数
1
解决办法
339
查看次数

Flutter 中什么是“脏”状态以及是什么导致了这种“脏”状态?

我正在尝试通过这个演示项目学习状态管理和依赖注入。我正在尝试演示在整个地方注入一些方法,就像我的程序中可能需要的那样。我使用 GetX 是因为我喜欢能够在非小部件类中无需上下文即可执行此操作。

\n

所以我的问题是下面最后一个类中的最后一个方法 summationReturns() 。尝试采用带有 return 语句的方法并将它们添加在一起。我在两个地方这样称呼它。在浮动按钮中,这工作正常,但在我的文本小部件中,我收到脏状态错误。

\n

为什么当其他一切都有效时这不起作用?我认为这将是最后一个问题的必然结果,什么是脏状态?看起来像是两个问题,但我想它们是同一个问题。

\n
///\n///\n/// DEMO PROJECT WORKING OUT GETX\n/// WORKOUT DEPENDANCY INJECTION AND STATE MANAGEMENT\n\nimport 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:get/get_state_manager/get_state_manager.dart';\n\nvoid main() {\n  runApp(GetMaterialApp(\n    home: Home(),\n    debugShowCheckedModeBanner: false,\n  ));\n}\n\nclass Home extends StatelessWidget {\n  // Injection of dependancy\n  final Controller controller = Get.put(Controller());\n  final Observable observable = Get.put(Observable());\n  final SimpleMath simpleMath = Get.put(SimpleMath());\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      appBar: AppBar(\n        title: Text('GetX Demo'),\n      ),\n      body: Center(\n        child: Column(\n          mainAxisAlignment: MainAxisAlignment.center,\n          children: <Widget>[\n            Text('Get …
Run Code Online (Sandbox Code Playgroud)

state-management flutter flutter-getx

6
推荐指数
1
解决办法
6601
查看次数

Flutter BLoC:Cubits 比 BLoC 更好吗?

我使用 Flutter 工作了很长时间,并发布了很多产品。我从来没有真正喜欢过 BLoC,更喜欢使用 Provider 或后来的 Riverpod。

我只是不明白该事件的概念。为什么我们还需要它?我很困惑,因为它的实际受欢迎程度...... BLoC 有 Cubit 子类,似乎使用起来更简单,但每个人都只是不停地说:“Cubit 更简单,但功能不那么强”。但有什么限制呢?

我什至认为肘尺更有用,同时也更简单:

  1. 使用 Cubit,您只需使用参数调用它的方法。如果需要,您仍然可以监听其状态并获取方法返回值。
  2. 您不需要额外的编码来实现这些事件类型。
  3. 您不需要额外的代码来实现 bloc 如何处理每种事件类型。方法就可以做到这一点。

示例:用户点击某些产品的“添加到购物车”按钮。

肘:

cartCubit.addProduct(productId);
Run Code Online (Sandbox Code Playgroud)

集团:

cartBloc.addEvent(UserAddsProductEvent(productId));
Run Code Online (Sandbox Code Playgroud)

在它们里面:

肘:

void addProduct(String productId) async {
   //some validation...
   if(...){...}
   final result = await cartRepo.addProduct(id);
   if(result == ...) {
      state = someState;
   //....
}
Run Code Online (Sandbox Code Playgroud)

集团:

void addEvent(CartEvent event) {
   if (event is UserAddsProductEvent) {
      _addProduct(event.productId)
      } else if (event is....) {
      //.....
      }
}

void _addProduct(String productId) async {
   //some validation...
   if(...){...}
   final result = …
Run Code Online (Sandbox Code Playgroud)

state-management dart flutter bloc

6
推荐指数
2
解决办法
3433
查看次数

在不使用Vuex中的操作的情况下提交突变是不是很糟糕?

我一直在使用Vuex一段时间,我一直遵循这种模式:组件使用Actions来提交Mutations来改变Store.我认为这是从文档中考虑此图表的正确方法: 在此输入图像描述

我遇到过代码,人们直接在组件中提交突变,甚至没有创建简单的操作,除了触发突变之外没有其他目的.我甚至在Vuex文档中找到了几个这样的例子.

我认为,因为它在文档中使用,这必须是一个可接受的模式,我想知道是否跳过动作并直接触发Mutations是由任何其他状态管理库(如Redx of Flux本身)认可的模式.

TLDR:可以直接在Vuex中提交突变,如果是这样,其他状态管理库(如Redux)是否使用这样的模式?如果是这样,为什么不呢?

state state-management flux redux vuex

5
推荐指数
1
解决办法
723
查看次数

针对特定用例在 flutter 中的不同页面上维护相同的状态

我知道颤振中的状态管理存在某些问题,但它们似乎都不能解决我的用例。

最近我正在构建一个基于电子商务的应用程序,并遇到了这种对状态管理的真正需求。我有2页,

  1. 其中一个是产品页面,我在其中将产品添加到购物车。
  2. 第二个是购物车页面,我在其中看到最近添加到购物车的产品。

产品和购物车页面

用户可以将产品添加到购物车,然后导航到购物车。在购物车页面中,他们还可以增加或减少商品的数量。

正如您所看到的,最初黄色商品被添加到购物车中,数量为 3,但在购物车页面中,用户按下 (-) 按钮,将数量减少到 1。现在,如果用户按下后退按钮,则状态为黄色产品在产品页面上仍为 3。与粉色产品类似的情况。

因此,我尝试使用正常的 setState 和一些全局数据结构来解决这个问题来跟踪数量。但随着我的应用程序变得越来越大,跨页面维护状态真的很困难。我读过不同的状态管理解决方案,例如 redux、BloC 模式、Provider,...但我不清楚如何在我的用例中使用它们。有没有有经验的人帮我把石头敲碎,帮我消化一下?

任何有关如何解决此问题的示例代码和解释将不胜感激!

希望我的问题是清楚的!

state-management flutter flutter-provider flutter-bloc flutter-state

5
推荐指数
1
解决办法
1973
查看次数