Redux 奥雷利亚州管理

Redux 奥雷利亚州管理,redux,state,aurelia,mobx,Redux,State,Aurelia,Mobx,奥雷利亚是否有州管理的最佳实践或图书馆? 类似于vue.js的集成状态管理 我看到一些建议,从一个简单的对象: export default { user: ..., router: ..., ..., } 对于某些aurelia redux集成: 有没有人对一个不那么复杂的图书馆有很好的经验?在我看来,Redux是一个非常简单的例子。我想要一些小脚印的包装纸,类似于react的连体衣 我曾多次尝试: store.js 存储为对象: export default{ test: 'xxx'

奥雷利亚是否有州管理的最佳实践或图书馆? 类似于vue.js的集成状态管理

我看到一些建议,从一个简单的对象:

export default {
user: ...,
router: ...,
...,
}
对于某些aurelia redux集成:

有没有人对一个不那么复杂的图书馆有很好的经验?在我看来,Redux是一个非常简单的例子。我想要一些小脚印的包装纸,类似于react的连体衣

我曾多次尝试:

store.js

存储为对象:

export default{
  test: 'xxx'
};
存储为类:

export default class Store{
  constructor() {
    this.test = 'xxx';
  }
};
在组件中,我将其集成如下:

import { inject } from 'aurelia-framework';
import store from './store';

@inject(store)
export class TestComp {
  constructor(store){
    this.store = store;
  }
}
甚至没有注射:

import store from './store';

export class TestComp {
  constructor(){
    this.store = store;
  }
}
所有的组合看起来都很好,商店在视图/组件之间保持同步


一个的优点是什么。。。或者你会首先提出完全不同的方法吗?

你可以在


我建议使用inject。

我选择了class方法,然后在需要的地方将类注入

import {observable} from 'aurelia-framework';
import {Cookie} from 'aurelia-cookie';

export class AppConfig {

  @observable companyCode;
  @observable applCodeInUse;
  @observable theme;

  constructor() {
    // Set up properties in here
  }

  // Some functions used for value conversion

}
然后,因为注入的类被视为单例-您可以只注入
AppConfig
类并访问属性

import {inject, NewInstance, ObserverLocator} from 'aurelia-framework';
import {AppConfig} from 'config/AppConfig';

@inject(AppConfig)
export class Form {
    constructor(appConfig) {
       this.appConfig = appConfig;
    }
} 
这显然与您的一个解决方案非常相似。我使用了一个类,因为有一些用于转换值等的业务逻辑


你的怀疑似乎是关于这是否是糟糕的设计——但Aurelia的要点是,只要你的代码遵循标准,那么你就可以自由地使用任何你喜欢的约定来实现你的结果。据我所知,这种方法没有任何违背最新JS标准的地方。它还重量轻,灵活。我看没问题

另一种方法是继续使用经典服务,但仅通过操作更改存储中的单个状态。你可以在这里找到一篇关于它的文章。这种方法在核心使用一个RxJS BehaviorSubject,订阅该对象以使组件与状态同步。此外,与使用redux和重写应用程序相比,它为现有应用程序提供了一个更简单的升级路径。Oh和Redux开发工具支持也包括在内;)

与此同时,官方的Aurelia状态管理插件Aurelia Store已经正式发布。看看它是如何工作的。

您不能将一个对象注册为singleton并将其注入到类中吗?你对此有怀疑吗?@FabioLuz这正是我目前正在做的,但它似乎太简单和直截了当了。。。恐怕这是个糟糕的设计:)好吧,我不认为这是个糟糕的设计。发布您当前的解决方案,以便我们可以在以下情况下提出改进建议:necessary@FabioLuz我刚刚更新了问题