首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aurelia存储connectTo从不设置目标属性

Aurelia存储connectTo从不设置目标属性
EN

Stack Overflow用户
提问于 2019-04-06 06:53:26
回答 1查看 186关注 0票数 1

我按照文档设置了aurelia-store;在所有插件(来自dotnet核心的框架应用程序)底部的main.ts中,我定义了最后一个插件:

代码语言:javascript
复制
aurelia.use.standardConfiguration()
.plugin(PLATFORM.moduleName('aurelia-store'), { initialState })

然后我的应用程序需要登录用户并保存他们的持有者令牌。

代码语言:javascript
复制
await aurelia.start();
await aurelia.setRoot(PLATFORM.moduleName("modules/login/login.vm"));

在login类中,我尝试使用@connectTo装饰器。但是,它从不设置依赖属性。所以我在应用程序一开始就被这个简单的部分卡住了,我的工作已经建议不要使用Aurelia,但我说我想要更快的POC。

我已经准确地复制了文档,但仍然存在问题。值得注意的是,我必须关闭tsconfig中的strictNullCheck才能解析文档代码。

Login.ts

代码语言:javascript
复制
@connectTo({
  target: 'state',
  selector: {
    userToken: (store) => store.state.pipe(pluck('userToken')), 
    loginRedirected: (store) => store.state.pipe(pluck('loginRedirected'))
  }
})
export class Login {
  static inject = [Aurelia, Store]
  public state: State;
  app: Aurelia;

  constructor(Aurelia, private store: Store<State>) {
    this.app = Aurelia
    store.registerAction('ChangeUserToken', this.changeUserToken)
    store.registerAction('LoginRedirected', this.loginRedirect)
  }

  activate() {
    ... this.state is always undefined.
    if (!this.state.loginRedirected) { //error
    }
  }
}

我希望this.state属性有一个从全局状态存储中填充initialState值的状态对象。例如:

代码语言:javascript
复制
{ userToken: "", loginRedirected: false }

我只需要在登录时设置userToken并在app.js中检索它。这是不可能的;为了使这个基本功能真正工作,可能会缺少什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-24 03:18:02

ConnectTo是一个辅助装饰器,用于避免手动状态订阅,因为状态流是一个普通的rxjs可观察对象。如果你仔细看看官方的插件文档,你会注意到它在不同的生命周期钩子中设置了订阅。

也就是说,connectTo不能解决所有问题,使用手动订阅可以获得最大的灵活性。不要放弃你的追求,你只是在一开始就陷入了一个更复杂的启动时间的场景中,这很容易就会让你被许多其他框架/库咬到。另外,一定要访问discourse.aurelia.io官方论坛,并将解决方案发布到SO。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55544272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档