2017-05-10 5 views
0

まあ、この質問はダムだと思うかもしれませんが、私は2時間以上これと戦っています。ネイティブとしばらくの間答えを見つけていない、私は多分あなたたちが私を助けることができると思った。サブストリングをReact Nativeで使用しているときに 'undefined is not object'というエラーが発生する

実際には、単純なReact Nativeアプリを構築しています。そこで、HubSpotのAPIに接続していくつかのブログ投稿を取得し、それらを表示したり、やり取りしたりしています。これは今のところうまくいきますが、JSONを解析しているときに、タイムスタンプを含む "publish_date"フィールドがあります。何らかの理由で、このタイムスタンプに3つの余分な数字が含まれています。これはタイムゾーンのものだと思います。とにかく、私は '反応タイムスタンプ'を使用してタイムスタンプを出力すると、私はこの値を使用し、私はあまりにも遠くに日付の方法を取得します。だから私は最後の3桁を削除し、正しい日付を出力するために部分文字列を使用すると考えました。

これが失敗しているコードの一部です:

renderRow(post) { 
    return(
     <View style={styles.row}> 
      <Image style={styles.image} source={{uri: post.featured_image}} /> 
      <View style={styles.info}> 
       <Text style={styles.title}>{post.title}</Text> 
       <Text style={styles.author}>Por {post.author_name}</Text> 
       <Timestamp time={post.publish_date.substring(10)} component={Text} format='date' /> 
      </View> 
     </View> 
    ); 
} 

render() { 
    return(
     <ListView 
      dataSource={this.state.dataSource} 
      renderRow={this.renderRow.bind(this)} 
      style={styles.page} 
     /> 
    ); 
} 

私はそれを実行すると、私は次のエラーを取得:

Error

私は真剣に私が「かわかりません私は間違っている、と私は繰り返す、これは私にとって新しいものなので、失礼ではないでください。昨日私は.replace( '')を使用しようとして同じエラーで走ったので、私はあきらめて別の解決策を探しました。この場合、私は他には行くことができないと思う。

私があなたを助けてくれることを願っています。前もって感謝します。

+0

私はこれ以上多くの時間をかけて作業しており、いくつかの異なる結果が得られました。おそらくこの問題は私がインストールしたタイムスタンプモジュールに直接関係すると思うかもしれません。だから私は**というメインクラスの外に関数**を追加しました。私はその関数でタイムスタンプを分割したコードを実行して正しいものを取得しましたが、すべてが通過しましたが、Timestampモジュール内で呼び出すと同じエラーが発生しますが、 ' {cts } '** cts **は関数の結果ですが、正しく表示されます。私はここで何が欠けていますか? –

答えて

0

多くの時間の後、答えを得ず、モジュールのGitで問題を開いても、私は見守ることに決めました。

これは、実際には私のタイムスタンプはミリ秒単位であり、ミリ秒単位に変換すると、プロセス内の何かがタイムスタンプモジュールをクラッシュさせることになります。だから私はそれを落として別の方法を使うことに決めました。

それはこのように行きました:

var datePosted = new Date(post.publish_date).toString(); 

を今、私は外のモジュールを必要とせずに、正しい日付を取得します。これが誰にも役立つことを願っていますが、世界の誰も私のようにこの問題に直面しているとは思わない。とにかく、ありがとう。

0

はエラーによると、そこに関数でrenderRowに渡されたオブジェクトのポストには"publish_date"属性がありません、そのため、部分文字列への呼び出しがある

、あなたのポストのオブジェクトを記録し、"publish_date"が定義されているかどうかを確認してみてください失敗する。

+0

部分文字列関数を削除すると、タイムスタンプが取得されます。そのため、publish_date変数には何かが含まれています。問題は3桁の余分な数字が含まれているため、通常の日付形式に変換すると4000年頃の日付が得られます。そのため、部分文字列関数を使用したいのです。私が言ったように、私は単純な文字列で置換関数を使用しようとしたので、私はまったく同じエラーを取得するので、エラーは何かから来ると思います。とにかくありがとう。 –

+0

余分な3桁の数字ですが、これは秒単位ではなくミリ秒単位でタイムスタンプを取得していることがわかります。それを1000で割って日付に変換しようとすると、適切な日付になるはずです。 – TheFuquan

+0

私のコードを更新しました: 'var date = post.publish_date; date = date/1000; 'このエラーが発生しました:" nullはオブジェクトではありません(date.splitを評価しています) "。私は本当にこれについて不満を感じています。 –

関連する問題