web-dev-qa-db-ja.com

Reactネイティブ-NSNumberはNSStringに変換できません

以下は私の反応コンポーネントの一部です。数が含まれているこのコンポーネントに入ってくる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は値が文字列形式であることを想定しているため、これを想定しています。これに対する適切な修正は何ですか?

前もって感謝します!

11
Sohrab Hejazi

FontWeight()関数内

return weight * 100;

おそらくなる:

var val= weight * 100;
return val.toString();
19
Robert Moskal

同様の問題があり、画像のURIではなくアイコンを渡していました。コードは_icon = 'path/to/icon'_を受け入れるように記述されています。

_<Image source={{ uri: icon }}>
_

しかし、私はicon = require('path/to/icon')を渡しており、jsxを

_<Image source={icon}>
_
6
ehacinom

fontWeightには、整数ではなく文字列値が必要です。

文字列を返すことを確認してください:

return (weight * 100).toString();

「重み」変数がゼロに等しくないことも確認してください。

3
Leon

次のようなreact-nativeモジュールのStyleSheetを使用できます。

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>
1
ismnoiet

反応フォントの太さは文字列でなければなりません、

反応文書では、彼らは特に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();
  }
0
NuOne