Aurelia store connectTo 从不设置目标 属性
Aurelia store connectTo never sets target property
我按照文档设置了 aurelia-store;在所有插件底部的 main.ts 中(来自带有 dotnet 核心的骨架应用程序)我定义了最后一个插件:
aurelia.use.standardConfiguration()
.plugin(PLATFORM.moduleName('aurelia-store'), { initialState })
然后我的应用程序需要登录用户并保存他们的不记名令牌。
await aurelia.start();
await aurelia.setRoot(PLATFORM.moduleName("modules/login/login.vm"));
在登录中 class 我正在尝试使用 @connectTo 装饰器。但是它从不设置依赖项 属性。所以我在应用程序一开始就停留在这个简单的部分,我的工作已经建议不要使用 Aurelia 但我说我想快速 POC。
我已经完全复制了文档,但问题仍然存在。值得注意的是,我必须在 tsconfig 中关闭 strictNullCheck 才能解析文档代码。
Login.ts
@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 属性 有一个从全局状态存储中填充初始状态值的状态对象。
例如
{ userToken: "", loginRedirected: false }
我只需要在登录中设置 userToken 并在 app.js 中检索它。这不可能;让这个基本功能真正起作用可能缺少什么?
ConnectTo 是一个辅助装饰器,可以避免手动状态订阅,因为状态流是一个普通的 rxjs 可观察对象。如果您仔细查看官方插件文档,您会注意到它在不同的生命周期挂钩中设置了订阅。
也就是说 connectTo 无法解决所有问题,而手动订阅则具有最大的灵活性。
不要放弃你的追求,你只是运气不好,一开始就陷入了更复杂的启动时间场景,这很容易也会让你陷入许多其他 Frameworks/Libraries。还要确保访问官方 discourse.aurelia.io 论坛和 post 返回 SO 的解决方案。
我按照文档设置了 aurelia-store;在所有插件底部的 main.ts 中(来自带有 dotnet 核心的骨架应用程序)我定义了最后一个插件:
aurelia.use.standardConfiguration()
.plugin(PLATFORM.moduleName('aurelia-store'), { initialState })
然后我的应用程序需要登录用户并保存他们的不记名令牌。
await aurelia.start();
await aurelia.setRoot(PLATFORM.moduleName("modules/login/login.vm"));
在登录中 class 我正在尝试使用 @connectTo 装饰器。但是它从不设置依赖项 属性。所以我在应用程序一开始就停留在这个简单的部分,我的工作已经建议不要使用 Aurelia 但我说我想快速 POC。
我已经完全复制了文档,但问题仍然存在。值得注意的是,我必须在 tsconfig 中关闭 strictNullCheck 才能解析文档代码。
Login.ts
@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 属性 有一个从全局状态存储中填充初始状态值的状态对象。 例如
{ userToken: "", loginRedirected: false }
我只需要在登录中设置 userToken 并在 app.js 中检索它。这不可能;让这个基本功能真正起作用可能缺少什么?
ConnectTo 是一个辅助装饰器,可以避免手动状态订阅,因为状态流是一个普通的 rxjs 可观察对象。如果您仔细查看官方插件文档,您会注意到它在不同的生命周期挂钩中设置了订阅。
也就是说 connectTo 无法解决所有问题,而手动订阅则具有最大的灵活性。 不要放弃你的追求,你只是运气不好,一开始就陷入了更复杂的启动时间场景,这很容易也会让你陷入许多其他 Frameworks/Libraries。还要确保访问官方 discourse.aurelia.io 论坛和 post 返回 SO 的解决方案。