2016-12-06 69 views
12

在阵营原生0.39渲染,阵营本地视图与明确设置宽度/高度,但以0 flexBasis

我经常会收到这样的错误,但我真的不明白为什么(APPART,我没这个事实没有设置flexGrow ...)。

下面是从控制台错误

View was rendered with explicitly set width/height but with a 0 flexBasis. (This might be fixed by changing flex: to flexGrow:) View: <RCTShadowView: 0x6080005a02a0; viewName: RCTView; reactTag: 2608; frame: {{0, 0}, {nan, nan}}> 

可以给我这样的人解释为什么会触发这个错误?

编辑:这个错误来自该位的样板代码我加在主视图:

flex: 1, 
// remove width and height to override fixed static size 
width: null, 
height: null, 

但如果有人能阐明反应,原生样式光或使我很好的资源,我会感激:)

+2

肮脏的方式:替换柔性:与flexGrow:如果你有宽度和高度 –

+0

这就是错误说...但为什么? –

+0

我遇到了同样的问题= = – subei

回答

3

参考react-native/React/Views/RCTShadowView.m,必须有评论

This works around a breaking change in css-layout where setting flexBasis needs to 
be set explicitly, instead of relying on flex to propagate. 

    We check for it by seeing if a width/height is provided along with a flexBasis 
of 0 and the width/height is laid out as 0. 

的错误是触发当flex未定义flexBasis并且宽度和高度都为零

参考react-native/Libraries/StyleSheet/LayoutPropTypes.js,我们知道flexGrow,flexShrink和flexBasis接收值的数量。

对于视觉指导,您可能会参考这个网页,A Visual Guide to CSS3 Flexbox Properties

+0

感谢您的详细解释:) –

+3

升级后我也得到了这个,但是很难确定发生了什么: 'ExceptionsManager.js:71 View显式设置了宽度/高度,但有一个0 flexBasis。(这可能通过更改flex来解决:flexGrow :)查看:' – Marc

+0

您是否设置了样式上的任何弹性,宽度和高度都会触发该错误? –

1

指定flexDirection: 'row'解决问题¯\_(ツ)_/¯

1

由于错误状态 - 改变“柔性”到“flexGrow”和问题就解决了。

关于这个的难点在于如何找到'flex'需要从整个项目中改变。我所做的是(使用Atom编辑器,所以'在项目中查找'...)使用'flexGrow:'更改每个'flex:'(最后使用':'确保您更改样式),然后只需在整个项目中重新搜索'flexGrow',然后使用'flex'从每个文件更改每个'flexGrow',直到找到损坏的'flex'。

我更喜欢使用flex而不是flexGrow,这就是为什么我恢复为flex。这就是为什么:Layout Props

希望这可以解决问题。

0

在node_modules/react-native/React/Views/RCTShadowView.m在第170行添加“//”,如下所示:“// RCTAssert(!YGNodeIsDirty(node),@”尝试从脏瑜伽节点。 “);”