Material-ui: Material-UI与React 0.14不兼容

创建于 2015-07-03  ·  59评论  ·  资料来源: mui-org/material-ui

由于React 0.14refs有变化。 我认为Material-UI几乎与库的每个组件都有很多问题。

this.refs.XXX将返回DOM节点而不是组件,这意味着我们将无法在其上调用任何组件函数。

所有59条评论

@tleunen你在舞会上! React 0.14 beta今天发布了。

@ hai-cea我看了一些问题(我在21个文件中发现了约50个问题)。 这可能是一个里程碑的好机会。 我正在查看dialog / dialog-window / overlay文件,并且通过this.refs.xxx.yyy()有很多耦合,所以这可能不是一个简单的任务。 如果您想成为一个React 0.14兼容性里程碑,请告诉我,我可以协助编写问题(我敢肯定@tleunen希望参与其中-我不想自愿)。

谢谢@tleunen!

我同意,这会引起一些问题。 有什么选择? 将元素保存到render内部的变量中?

@jkruder你对小胶质- https://gitter.im/callemall/material-ui ? 请给我发一份即时消息,以便我们就组织问题/里程碑取得进展。

大多数时候,组件不应具有公共功能。 一切都必须通过道具或在安装时传递。

例如,Dialog组件不需要showhide 。 如果在dom中,则显示它,否则不显示。

我刚刚开始使用Material-UI,所以我不太了解其他组件的问题,但是我认为其中大多数可以重写为不具有公共功能(无论如何,别无选择)。
事实是,与当前版本相比,这将是一个重大突破。

@tleunen我对Dialog的show和hide方法完全同意。

@tleunen @oliviertassinari是的,我都同意。 这是我们在设计该组件时遇到的争论。 我们遇到的问题是点击功能。 如果打开/关闭是在状态下处理的,那么它可能会担心单击时关闭自身。 如果打开/关闭作为道具传递,则使用对话框的每个人都必须自己处理点击。

现在,中间的解决方案是在对话框中添加onClickAway道具,并让组件的用户打开/关闭。

@ hai-cea我建议使用与https://github.com/rackt/react-modal相同的方法

与DOM组件交互时,此库还使用this.refs来代替说getDOMNode()吗? React中的这一更改仅适用于诸如<div/><i/> ,不是吗? 您的自定义组件仍可以照常通过this.refs.xxx访问。 如果我错了,请纠正我,我还没有尝试过React 0.14,但是HackerNews也出现了同样的事情。

您的意思是,如果React检测到ref在自定义组件上,它将返回该组件而不是组件内部的DOM元素?

@tleunen是我的理解。 需要验证:)

@mull如果是这样的话,那将非常好。 :)

@ hai-cea @mull @tleunen只需运行一个快速测试,然后对自定义(扩展React.Component的组件)组件(this.refs.customComponent)的引用将返回对React组件的引用,而不是底层DOM节点。 如果您有对DOM节点(div / a / img / etc)的引用,则this.refs.domRef将返回该节点。

@ hai-cea话虽如此,我仍然认为摆脱对this.refs.XXX的调用方法是一个好主意。

@jkruder谢谢,很高兴我没有说出来... :)

好的,谢谢您进行@jkruder的研究。 我认为我们可以关闭此文件。 虽然,我认为我们仍然需要做一个0.14里程碑?

另外,你们对#1033有什么看法?

我想我们可以将其关闭。 但是最好重写一些组件,以消除对它们调用函数的需要。 不是组件应该如何工作:/

@ hai-cea同意。 我正在草拟0.14里程碑的拟议工作草案,并将其发送给您以征求反馈。

关于#1033,我认为我们不应该立即跳楼。 我全力创建一个单独的分支,在该分支中,我们可以转换MUI,使其与0.14的提议兼容,并使组件更具功能性(最小化/消除this.refs.XXX.YYY())。

如果当前使用this.ref.xxx并与react 0.14.0-beta1一起使用时实际上并没有破坏material-ui,那么我不希望离开该模式应该阻止#1033。 通过更轻松地将material-ui与react 0.14.0-beta1一起安装,您将设置自己,以获取对可能出现的实际问题的早期反馈; 最好在0.14仍处于测试版时接收该反馈。

也许是一个更好的选择(更好地管理期望),是在npm上发布Material-ui的alpha / beta / rc版本,其对等依赖项为0.14.0(并旨在使Material-ui 0.14兼容)。 这样,人们可以更轻松地前进并查找/修复可能存在的任何问题。

@jkruder对此有任何更新吗?

@ashtonwar还没有-我一直专注于建立一些测试并解决一些外部承诺。 我本周应该有一些时间来看看它,看看我们正在使用什么。 其他一些人已经尝试迁移到0.14。

为这个加油打气。 我从#1033看过material-ui-io 。 它似乎对某些组件(下拉菜单,按钮,小吃栏)有效,但在其他组件(复选框,滑块,切换)上掉下来并消失了。 不知道有任何其他迁移尝试。

@tleunen事实证明,我们仍然可以将this.refs.XXX用于自定义组件。 谢谢@jkruder

没问题; 我仍然认为,最好避免使用this.refs.doSomething()

任何更新? React JS 0.14 RC 1刚刚发布,并且真的很想与它一起使用Material-UI。

同样在这里,有没有一种方法可以支持向14的迁移?

我在生产中使用了material-ui-io-似乎还可以。

所以我是发布material-ui-io的人,这是移植material-ui的一次非常艰难和可悲的尝试。

我强烈建议您不要在生产中使用该库! 我做了一个端口并在一天之内发布了它,以测试material-ui,但是最终切换到在mdl之上创建我自己的库

我想说,我们所有人都可以帮助在React 14上进行实质性用户界面审查的最好方法是升级到React 14-rc1并报告每个出现的问题。 以“ React 14-rc1:发生此特定错误....”开头的问题标题或仅用适当的标签标记该问题可能是个好主意。

但也许不是,在这种情况下,我希望主要维护人员纠正我

https://github.com/callemall/material-ui/pull/1647

关于peer-deps,dev-deps和deps,可能需要进行一些修补,并且触摸事件有待解决的问题。

在React 0.14中,onTouchCancel,onTouchEnd,onTouchMove,onTouchStart自动工作,请参见https://facebook.github.io/react/blog/#breaking -changes。
要在没有react-tap-event-plugin的情况下启用onTouchTap:

import EventPluginHub from 'react/lib/EventPluginHub';
import TapEventPlugin from 'react/lib/TapEventPlugin';
EventPluginHub.injection.injectEventPluginsByName({ TapEventPlugin });

我们还有iOS Safari的300毫秒延迟吗?

我没有IOS ...
但是在这里https://github.com/facebook/react/issues/436的第一篇文章中,建议注入TapEventPlugin作为解决方案。
除了这里https://github.com/facebook/react/commit/ff12423d639413c1934dfc2ff337b298952e99ef,我发现了相关的提交。

有没有支持React 14的暂定时间表? 这个问题确实很老,如果很快得到解决,那就太好了!

我也为使用该UI工具包感到非常兴奋,避免使用Bootstrap,Foundation甚至Elemental UI ...但是我将Redux与React 0.14结合使用,并且不会回到0.13。 更新需要多长时间?

另外,不确定我是否有资格询问/提供此信息,但是关于引用,(也不确定这是0.14还是0.12 / 0.13)我通常将其添加到表单输入元素中:

在我的onclick(或任何处理程序)代码中,我可以通过this.name.value访问该值。 使获取任何输入值变得非常容易。 有机会用工作参考来更新工具包是否有可能?

+1。 今天找到了material-ui,并且非常兴奋尝试它! 不幸的是,没有骰子。

+1。 还想知道此更新的时间表!

:+1:

伙计们,我们到了! 请参阅#1751。 此时,需要更多的工作才能升级到新的react-router api。

我建议尝试使用react-0.14-support分支并报告标题中带有[React0.14]前缀的任何问题。 一旦我们可以使该分支完全正常工作,我将结束此问题(最终!):)

很高兴听到! 期待最终版本。 我一直在和
Redux,React,react-router,到目前为止,这是一个非常不错的方法。 看
希望将Material UI纳入其中。

2015年9月29日,星期二,下午1:31,Shaurya Arora [email protected]
写道:

伙计们,我们到了! 参见#1751
https://github.com/callemall/material-ui/pull/1751。 在这一点上
升级到新的react-router API需要做的工作很少。

我建议尝试使用react-0.14-support分支并进行报告
标题中带有[React0.14]前缀的任何问题

-
直接回复此电子邮件或在GitHub上查看
https://github.com/callemall/material-ui/issues/1030#issuecomment -144183104

凉! 如果有什么事我会提出问题...

关于React 0.14支持的发布日期有什么新闻吗?

@amagdas您知道react-0.14-support分支吗? 这是一项持续的工作。 随时进行测试并报告带有[React0.14]前缀的任何问题

@ shaurya947是的,我知道,但是我无法使用npm安装分支,然后再试一次。
拥有某种有关如何使用react 0.14测试此分支的自述文件/ Wiki会很好。

您可以从克隆中获取npm link ,也可以在您的项目中执行npm i 'git://github.com/callemall/material-ui#react-0.14-support'

为了清楚起见,您需要在node_modules目录中进行npm安装
不是目录的根目录
2015年10月2日08:01,“ Chia-liang Kao” [email protected]写道:

您可以从克隆克隆npm链接,也可以执行npm i'git://
github.com/callemall/material-ui#react-0.14-support”。

-
直接回复此电子邮件或在GitHub上查看
https://github.com/callemall/material-ui/issues/1030#issuecomment -145051787

@amagdas该分支尚未在npm上启动,因为它仍然存在一些问题并且正在开发中。

您可以执行@clkao所说的操作,或者在克隆计算机上的存储库之后,使用git checkout react-0.14-support切换到react-0.14-support分支。

之后,当您在根目录中运行npm i时,所有源文件都将编译到lib文件夹中。 然后,您可以在项目中使用此lib文件夹。

是的,做到了这一点并且有效,它将给出反馈。

查看react 0.14宣布中的“值得注意的错误修复”(http://facebook.github.io/react/blog/2015/10/07/react-v0.14.html):
“单击事件由React DOM在移动浏览器中更可靠地处理,尤其是在Mobile Safari中。”
...

@kinolaev有关更多详细信息: https :

react-0.14-support被删除了吗?

@ovaris我被合并为大师。

@oliviertassinari什么时候可以在npm上使用?

什么时候可以在npm上使用

我不知道什么时候会有一个无错误的版本。 但是,您可以尝试使用npm进行master分支。

应该在最新版本v0.13.0中修复
感谢evreybody的帮助。

@oliviertassinari谢谢!

谢谢!

如果最新版本的material-ui中仍然存在此问题,您有何想法? 我可以使用大多数组件,但是可以使用this.refs.xxx。例如,如果我尝试使用DatePicker组件,则会收到错误“无法读取未定义的属性'show'”,此处未定义的是this.refs.dialogWindow。

我正在反应0.14.8和材料-ui 0.14.4 ...

同样的错误

似乎material-ui不适用于React 0.14.8和0.14.9,这是可悲的。
Webpack在我的控制台上发出很多奇怪的投诉。 不知道该怎么办。

@ topgun743这对您将此处的出色工作(免费提供)描述为可悲的,这会让您非常受伤。

自从开了这个问题反应15一推出,即材料的UI,兼容。 我建议在您的项目中升级React。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

chadobado picture chadobado  ·  119评论

iceafish picture iceafish  ·  62评论

nathanmarks picture nathanmarks  ·  100评论

aranw picture aranw  ·  95评论

NonameSLdev picture NonameSLdev  ·  56评论