Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如果实现状态共享呢? #130

Open
JslinSir opened this issue Sep 28, 2021 · 9 comments
Open

如果实现状态共享呢? #130

JslinSir opened this issue Sep 28, 2021 · 9 comments

Comments

@JslinSir
Copy link

A,B两个页面

A 页面的登录态,需要B页面 登录刷新

A 有自己的model B 也有自己的model ,

看了源码,绑定的 view id 会做自增长,view的状态更新没法共享

@dntzhang
Copy link
Collaborator

store 里可以 import 多个 model 组合。比如假设 登录态信息在 user model 里,a 页面的 store 和 b 页面的 store 都可以使用 user model

这里可以看到 store 可以组合 model
https://github.com/Tencent/westore/blob/master/packages/westore-example/stores/other-store.js#L3-L4

@JslinSir
Copy link
Author

每次new 出来的 model 实例 都是一个新的变量,之前绑定的 model 不会随之改变的

想知道,a 页面的 store如何 根据 b页面的 store 触发时候得到更新

@dntzhang
Copy link
Collaborator

dntzhang commented Sep 29, 2021

1.你可以先new 出来再import到 各个store

2.westore 没有斩断 store 之间的通讯吧,这个可以开发者自己组织依赖关系、发布订阅什么的。

model之间可以多对多互相依赖,store之间可以多对多互相依赖,model和store之间可以多对多互相依赖。

westore只是斩断model和view之间的依赖。

@JslinSir
Copy link
Author

好的,谢谢👍🏻

这种组织结构非常棒

@JaimeCheng
Copy link

不同页面之间同一个model 。data不更新,

@SakuOtonashi
Copy link

参考这个库我自己另外实现一个状态管理 https://gist.github.com/SakuOtonashi/c98aa31d2b5fdc82ba0bcdb1eb8e07cd
强化了Store的作用:Store和页面/组件是多对多绑定,绑定时指定属性名用来隔离多个Store绑定在同一个页面/组件上命名冲突。

Page({
  data: {
    stateData: stateStore.data,
  },
  onLoad() {
    this._ssViewId = stateStore.connectAndUpdate('stateData', this)
  },
  onUnload() {
    stateStore.disconnect(this._ssViewId)
  },
  getUnreadCount() {
    stateStore.getUnreadMessageCount()
  },
})

@lidesheng111
Copy link

“想知道,a 页面的 store如何 根据 b页面的 store 触发时候得到更新”
同想知道。下面大神的回答我不太清楚,请问您是怎样解决的呢

@Elio204557140
Copy link

如果是tabbar页面的话,页面A,B使用同一个store,此时数据无法同步更新

@nanhupatar
Copy link
Contributor

好的,谢谢👍🏻

这种组织结构非常棒

请问,这里你是怎么处理的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants