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

pageB想要操作pageA的某个state,最好的办法是把它做成globalstate吗? #511

Open
CoolBerry opened this issue Nov 8, 2019 · 13 comments

Comments

@CoolBerry
Copy link

CoolBerry commented Nov 8, 2019

如果只能做成globalState的话,那么当页面变多之后,为了页面之间共享数据的需求,global state数据会越来越多。

@CoolBerry CoolBerry changed the title page pageB想要操作pageA的某个state,最好的办法是把它做成globalstate吗? Nov 8, 2019
@CoolBerry
Copy link
Author

上述问题的引申问题:
Page应该如何更好的监听global state的变化,来做相应的事情。
已知是page可以通过connectExtraStore来bind globalstate成为页面的state,那如何自动的处理,这部分state变化之后page还要处理的事情呢。
例如:userInfo(用户登录态)是global state,pageA connect了这部分state。那么想要实现pageA检测到userInfo发生变化之后,要重新刷新页面这个需求要怎么合理实现呢。

@CoolBerry
Copy link
Author

如果通过globalStore.subscribe((){//这里加判断})这样的方式确实是可以,但总感觉哪里怪怪的,因为page已经connect store的数据到page里了,但是还要subscribe store,就有点奇怪。

或许有更好的办法来实现。

@zjuwjf
Copy link
Contributor

zjuwjf commented Nov 8, 2019

pageA connect globalStore, 如果globalStore中的状态(pageA关心)发生变化,会自动触发 pageAStore状态的变化,也就能自动刷新。

@ludy520
Copy link

ludy520 commented Nov 9, 2019

@zjuwjf globalStore的状态更新后,自动触发pageStore的状态变化,那怎么触发pageStore的initState??

@zjuwjf
Copy link
Contributor

zjuwjf commented Nov 9, 2019

@zjuwjf globalStore的状态更新后,自动触发pageStore的状态变化,那怎么触发pageStore的initState??

不会触发initState。 initState 只会在创建store的初始化中执行一次。

@ludy520
Copy link

ludy520 commented Nov 9, 2019

@zjuwjf 因为一些api是在page的initState的时候去调用的,那如果是更新了globalState的用户,需要重新调用这些initState的api,该去怎么去触发好了??

@zjuwjf
Copy link
Contributor

zjuwjf commented Nov 9, 2019

可以放在 AppStore 和 PageStore 的connector 里

@ludy520
Copy link

ludy520 commented Nov 9, 2019

@zjuwjf 还是不太明白啊,请教可以给个demo吗?

@zjuwjf
Copy link
Contributor

zjuwjf commented Nov 10, 2019

@zjuwjf 还是不太明白啊,请教可以给个demo吗?

你可以给一下你的initState代码和AppStore 与 PageStore 的connector代码

@CoolBerry
Copy link
Author

CoolBerry commented Nov 11, 2019

pageA connect globalStore, 如果globalStore中的状态(pageA关心)发生变化,会自动触发 pageAStore状态的变化,也就能自动刷新。

@zjuwjf 对的是这样子的,假设就叫做stateA,global中的stateA刷新之后pageA里面就自动刷新了。但是因为是自动刷新,所以pageA的需求是,监测到stateA变化的话需要call一次后端,类似这种需求的话,应该写在什么地方会比较合适呢?

  1. 写在pageA的initState里面去subscribe global,去判断。
  2. 写在coonect里面?

或者是否有更合适的方案?

@yaotj
Copy link

yaotj commented Nov 22, 2019

可以写多个GlobalState吗?
比如PageA、PageB对应StateA,PageC、PageD对应StateC,分别connector

@li305263
Copy link

li305263 commented Mar 5, 2020

同问..不同page之间数据共享 除了globalStore还有别的办法吗

@aimin987
Copy link

这个问题怎么优雅的解决,我也遇到了。 求助!!!!

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

6 participants