我已经从RN0.54升级到0.57,而我的应用程序由于使用而大打折扣。
我在TextInput
组件上使用了它们的错误功能,这基本上启用了道具,您可以对错误消息进行样式设置并设置错误消息。非常方便,但是升级打破了这些错误,现在我遇到了这样的错误:
因此,我已经删除了该代码,错误消失了,但是在运行这段代码时,我仍然会收到这个问题:
{ this.state.event.cards[i].fields[j].error &&
<Text style={{ color: '#e74c3c', fontSize: 14, paddingLeft: 5 }}>
{this.state.event.cards[i].fields[j].error}
</Text>
}
当我开始键入一个文本输入时,它会将我的错误消息设置为一个空字符串,因此如果返回一个错误,那么在字段中键入就会使错误消失。
一旦this.state.event.cards[i].fields[j].error
变成一个字符串,我就会得到这个错误。但是,您可以看到我检查是否存在错误,然后只显示错误,或者至少尝试显示错误。
另一双眼睛会感激这只眼睛的。
发布于 2019-01-26 23:32:43
对于我来说,以下代码工作正常,只要this.state.error === undefined
或它不是空字符串。
render() {
return (
<View>
{this.state.error &&
<Text>
Error message: {this.state.error}
</Text>
}
</View>
);
}
如果错误状态更改为空字符串'',则会出现上述异常:Invariant Violation: Text strings must be rendered within a <Text> component
原因是,当this.state.error === ''
时,下面的表达式将被计算为空字符串,即'',这将导致Invariant Violation: Text strings must be rendered within a <Text> component
{this.state.error &&
<Text>
Error message: {this.state.error}
</Text>
}
当this.state.error === undefined
时,表达式将被计算为undefined
,这正是我们所期望的,而且很好。
发布于 2019-11-29 16:13:25
,我的脚中了太多枪了,所以我把这个留给下一个人,而不是.
每当你看到
Invariant Violation: Text strings must be rendered within a <Text> component
99%的情况将由只使用&&而不是三元语句的条件呈现引起。为什么?因为当您的条件解析为未定义的时,那里没有组件,而不是null或空数组,它们可以安全地显示空空间,并从地狱的红色屏幕中拯救您的生命。
将所有逻辑条件呈现更改为三元表示。
ie:
不做
widgetNumber === 10 && <MyComponent />
DO
widgetNumber === 10 ? <MyComponent /> : null
每次都是。请。因为爱反应本土化。
发布于 2019-01-14 00:13:12
当您的返回()函数中有/*注释*/时,也会发生。
https://stackoverflow.com/questions/52368342
复制相似问题