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

请教:父组件(A)和子组件(B,C)Mixin问题 #2

Open
PitterL opened this issue Jan 25, 2021 · 2 comments
Open

请教:父组件(A)和子组件(B,C)Mixin问题 #2

PitterL opened this issue Jan 25, 2021 · 2 comments

Comments

@PitterL
Copy link

PitterL commented Jan 25, 2021

问题:父组件A下面有2个子组件B,C,他们三个分别都有自己的状态,并且需要数据共享,还可以触发相互之间的效应。

按照给出的Mixin方法,需要在子组件B, C单独定义自己的module,在父组件定义自己的common module。通过import提升,在父组件里面先导入子组件的Modue,然后调用minxin()混合modules,再调用bootstrap()注册到state。

这样有一个问题,父组件需要import所有子组件的module,相互耦合很强。
请问最佳结构是怎么设计?

能否在父组件和子组件分别先独立注册自的模块,然后子组件再独立混合到父组件中,达到共享状态的办法。

谢谢!

@freezeYe
Copy link
Collaborator

您好,我们其实只是提供了一个公共的模块注册入口,在注册的时候其实是不区分该状态隶属父组件还是子组件,只是在use的时候会建立绑定关系。Mixin是为了大家使用上的便利而暴露的,不是必要的使用条件的。

@PitterL
Copy link
Author

PitterL commented Jan 26, 2021

你好,冷叶:
这样的话,这个机制的方案是用静态的方法建立一个公共的仓库,仓库里有很多标签,每个标签都有state/reducer/effect信息块。外部组件用useModule获得相应的标签下的信息块,进行数据交换的。这个仓库对所有组件都是公平且透明的。
另外,由于是静态创建,相关标签信息块的具体内容文件,实际上都是要预先放到这个仓库的目录下(或者间接导入到这个目录下),而不是像redux那样,各自跟随在对应功能的组件里面。

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

2 participants