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

Toast 组件用方法调用似乎不符合 React 哲学 #7

Closed
cncolder opened this issue Dec 16, 2015 · 8 comments
Closed

Toast 组件用方法调用似乎不符合 React 哲学 #7

cncolder opened this issue Dec 16, 2015 · 8 comments

Comments

@cncolder
Copy link
Contributor

之前 n7 的设计是用 show 属性控制显示, 个人更喜欢之前的设计.
用属性控制显示的好处是属性可以接受 state 或其他 store 传递来的数据.

@progrape
Copy link
Collaborator

欢迎参与探讨,使用属性控制确实可以通过state或者其他变量来控制。但是如果需求简单,就是某种情况下show出来,完了隐藏掉,也需要单独维护一个state,会不会变得麻烦呢?

@cncolder
Copy link
Contributor Author

可以只稍微改一下现有的实现, 让state.active 读取 props.show 的值作为默认值, 这样如果不设置 props.show 的时候默认就是 false. 后续还是可以调用 .show().close() 来控制.

@n7best
Copy link
Collaborator

n7best commented Dec 16, 2015

我想就是尽量不需要单独用到组件方法 能不要state就不要 要state的话能用属性控制就用属性控制。因为比如说在loading的话就是上级组件的一个state loading来决定就好了

@cncolder
Copy link
Contributor Author

同意 @n7best , React 的理念是单向数据流, 组件会随着数据的变化局部刷新.
如果想要调用组件的方法, 首先要获得它的变量, 或者使用 ref.
带方法的组件会让它显得更像一个传统的 js 工具.

我之前提到的修改方案仔细想一下并不合适, 因为 .show() 方法修改 state, 会被随后的数据更新顶掉.

@progrape
Copy link
Collaborator

组件简单的话,组件内维护一个state,通过方法暴露,并没有什么大问题。不过可以像两位说的那样,统一使用属性往下传递的方式来进行,保持简单、统一~

progrape added a commit that referenced this issue Dec 17, 2015
#7 remove toast `show` & hide method, use `show` prop instead
progrape added a commit that referenced this issue Dec 17, 2015
#7 remove dialog `show` & `hide` method, use `show` prop instead
@shihongzhi
Copy link

首先赞一下这个库。 赞同用 属性show的方式来控制 组件的显示。 看目前代码已经修改, 不过这份 文档 还未修改~

@progrape
Copy link
Collaborator

囧,toast的说明文档改了,上手文档的示例没改,我改一下,谢谢提醒~

progrape added a commit that referenced this issue Dec 19, 2015
#7 remove ActionSheet `show` & hide method, use `show` prop instead, …
@tlightsky
Copy link

nice,最近正好用得着Loading的Toast

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

5 participants