2017-08-17 6 views
0

ボタンをクリックしてjsonファイルの次のオブジェクトに移動できるようにしたいと思います。しかし、私はどのようにforループをクリックして続けるか分からない。私はボタンのonpressイベントにi ++を追加しようとしましたが、私はプレスで考えると機能がないと思っています。どんな助けも素晴らしいだろう!私は、これはネイティブ反復ボタンをクリックした後のオブジェクト

import React, { Component } from 'react'; 
import { 
    AppRegistry, 
    StyleSheet, 
    Text, 
    View, 
    Image, 
    Button 
} from 'react-native'; 

var jsonData = require('./skull.json'); 

export default class flashcards extends Component { 
    render() { 
     var i = 0; 

     for (i; i < 50; i++) { 
      var skull = jsonData[i]; 
      return (
       <View style={styles.container}> 
        <Text> 
         Question #{jsonData.quiz.question[i].number} 
        </Text> 

        <Text> 
         {jsonData.quiz.question[i].question} 
        </Text> 
        <Image 
         source={{ uri: jsonData.quiz.question[i].picture }} 
         style={styles.thumbnail} 
        /> 
        <Button 
         title="Next Question" 
         color="#841584" 
         accessibilityLabel="Learn more about this purple button" 
        /> 
       </View> 
      ); 
     } 
    } 
} 

var styles = StyleSheet.create({ 
    container: { 
     flex: 1, 
     justifyContent: 'center', 
     alignItems: 'center', 
     backgroundColor: '#F5FCFF' 
    }, 
    thumbnail: { 
     width: 300, 
     height: 350 
    } 
}); 

AppRegistry.registerComponent('flashcards',() => flashcards); 
+0

あなたのアプローチが間違っていると感じます。私はNavigatorを使うべきだと思います。詳細は次のとおりです。https://facebook.github.io/react-native/releases/0.23/docs/navigator.html – Dev

+0

currentItemを追跡する状態変数を作成します。これを押すと、currentItem状態変数が現在のものを表示する必要があります。 – fungusanthrax

答えて

0

に雅をそれを行う方法をイマイチ場合、私はあなたがあなたのiを増やしており、このようなあなたのonPressイベントに状態を設定するstateを作成する必要があると思うので、申し訳ありません反応し、ネイティブのために非常に新しいです:

export default class flashcards extends Component { 
    constructor(props) { 
    super(props); 
    this.state = {i: 0}; 
    } 

    onButtonPress =() => { 
    if(this.state.i < 50){ 
     this.setState({ 
     i: this.state.i + 1 
     }); 
    } 
    } 

    render() { 
    return (
     <View style={styles.container}> 

     ....//your code 

     <Button 
      onPress={this.onButtonPress} 
      title="Next Question" 
      color="#841584" 
      accessibilityLabel="Learn more about this purple button" 
     /> 

     </View> 
    ); 
    } 
} 

とJSONデータを呼び出すために、あなたは、このようにthis.state.iiを変更する必要があります。

jsonData.quiz.question[this.state.i].question

反応のネイティブについて詳しくはstateをご確認ください。documentationを読むことができます。私はこの答えがあなたを助けることを願っています。

+0

それはどうですか@A。ヒル、これは動作していますか? –

0

あなたがループ内でthis.setStateを行う際this.setState再レンダリング50回の原因となりますので、あなたはこのように行う必要があります。

export default class flashcards extends Component { 
    constructor(props) { 
    super(props); 
    this.state = {i: 0}; 
    } 

    onButtonPress =() => { 
    let val = this.state.i; 
    if(val < 50){ 
     va += 1 
    } 
    this.setState({ i: val }); 
    } 

    render() { 
    return (
     <View style={styles.container}> 

     ....//your code 

     <Button 
      onPress={this.onButtonPress} 
      title="Next Question" 
      color="#841584" 
      accessibilityLabel="Learn more about this purple button" 
     /> 

     </View> 
    ); 
    } 
} 
関連する問題