React Native - NSNumber cannot be converted to NSString
下面是我的反应组件的一部分。我有一个名为daysuntil的道具,它包含一个数字。在本例中,它将通过数字0,从而导致fontweight函数返回700
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | render: function() { return ( <Text style={this.style()}> {this.props.day} </Text> ) }, style: function() { return { fontWeight: this.fontWeight() } }, fontWeight: function() { var weight = 7 - this.props.daysUntil; return weight * 100; } |
我得到以下错误:
JSON value '700' of type NSNumber cannot be converted to NSSTring.
我假设这是因为字体粗细要求值为字符串格式。正确的解决方法是什么?
提前谢谢!
在fontweight()函数中
1 | return weight * 100; |
也许变成:
1 2 | var val= weight * 100; return val.toString(); |
我遇到了一个类似的问题,我将一个图标而不是一个URI传递给一个图像。代码是用来接受
1 | <Image source={{ uri: icon }}> |
但我路过
1 | <Image source={icon}> |
fontweight需要一个字符串值,而不是整数。
只需确保返回一个字符串:
1 | return (weight * 100).toString(); |
还要确保您的"权重"变量不等于零。
您可以使用来自
1 2 3 4 5 6 7 8 9 10 | import StyleSheet from 'react-native' // declare the styles using Stylesheet.create const myStyles = StyleSheet.create({marginTop:30}) //... some code inside render method <Text style={myStyles}> This is an example </Text> |
在react中,字体粗细应为字符串,
在React Doc中,他们特别提到
Specifies font weight. The values 'normal' and 'bold' are supported for most fonts. Not all fonts have a variant for each of the numeric values, in that case the closest one is chosen.
所以你可以选择如下
1 2 3 | const boldText = { fontWeigth: '100' } |
或
1 2 3 | const boldText = { fontWeight: 'bold' } |
在这段代码中你可以说
1 2 3 4 5 6 7 8 9 | style: function() { return { fontWeight: this.fontWeight() } }, fontWeight: function() { var weight = 7 - this.props.daysUntil; return (weight * 100).toString(); } |