以下是我的反应组件的一部分。我有一个名为daysUntil的道具进入这个包含数字的组件。在这个例子中,它正在传递数字0,这导致fontWeight函数返回700
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;
}
我收到以下错误:
NSNumber类型的JSON值'700'无法转换为NSSTring。
我假设这是因为font-weight期望值为字符串格式。对此有什么正确的解决方法?
提前谢谢!
答案 0 :(得分:16)
在你的fontWeight()函数中
return weight * 100;
可能会变成:
var val= weight * 100;
return val.toString();
答案 1 :(得分:4)
我有一个类似的问题,我将图标而不是uri传递给Image。该代码被编写为接受icon = 'path/to/icon'
:
<Image source={{ uri: icon }}>
但是我传入了icon = require('path/to/icon')
,我不得不将jsx切换为
<Image source={icon}>
答案 2 :(得分:2)
fontWeight需要字符串值而不是整数。
请确保返回一个字符串:
return (weight * 100).toString();
确保您的“体重”变量不等于零。
答案 3 :(得分:1)
您可以使用StyleSheet
模块中的react-native
,如下所示:
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>
答案 4 :(得分:0)
react字体粗细应为字符串
在响应文档中,他们特别提到
fontWeight enum('normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900')
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.
因此您可以选择类似
const boldText = {
fontWeigth: '100'
}
或
const boldText = {
fontWeight: 'bold'
}
在此代码中您可以说
style: function() {
return {
fontWeight: this.fontWeight()
}
},
fontWeight: function() {
var weight = 7 - this.props.daysUntil;
return (weight * 100).toString();
}