it-swarm.com.de

Native reagieren - NSNumber kann nicht in NSString konvertiert werden

Unten ist ein Teil meiner Reaktionskomponente. Ich habe eine Requisiten namens daysUntil bis in diese Komponente, die eine Nummer enthält. In diesem Beispiel wird die Nummer 0 übergeben, was dazu führt, dass die Funktion fontWeight 700 zurückgibt

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;
  }

Ich erhalte folgende Fehlermeldung:

Der JSON-Wert '700' des Typs NSNumber kann nicht in NSSTring konvertiert werden.

Ich gehe davon aus, dass dies darauf zurückzuführen ist, dass font-weight erwartet, dass der Wert im String-Format vorliegt. Was ist die richtige Lösung dafür?

Danke im Voraus!

8
Sohrab Hejazi

In Ihrer fontWeight () - Funktion 

return weight * 100;

wird vielleicht zu:

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

fontWeight erfordert einen String-Wert und keine Ganzzahl.

Stellen Sie nur sicher, dass Sie eine Zeichenfolge zurückgeben:

return (weight * 100).toString();

Stellen Sie außerdem sicher, dass Ihre Variable "Gewicht" nicht gleich Null ist.

2
Leon

Ich hatte ein ähnliches Problem, bei dem ich ein Icon anstelle eines URI an ein Image übergeben habe. Der Code wurde geschrieben, um icon = 'path/to/icon' zu akzeptieren:

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

aber ich übergab icon = require('path/to/icon') und musste die jsx auf umstellen

<Image source={icon}>
1
ehacinom

Sie können StyleSheet aus dem react-native-Modul verwenden, etwa wie folgt:

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

in reaktion sollte das Schriftgewicht eine Zeichenfolge sein, 

in react doc erwähnen sie ausdrücklich, dass 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.

so können sie wählen wie folgt 

const boldText = {
  fontWeigth: '100'
}

oder 

const boldText = {
  fontWeight: 'bold'
}

in diesem Code können Sie sagen

  style: function() {
    return {
      fontWeight: this.fontWeight()
    }
  },
  fontWeight: function() {
    var weight = 7 - this.props.daysUntil;
    return (weight * 100).toString();
  }
0