2017-01-12 9 views
19

Dostaję poniżej błąd. Widzę, że muszę zwrócić tablicę zamiast obiektu. Ale naprawdę nie jestem pewien, jak to naprawić. Z góry dziękujęObiekty nie są ważne jako React child

Obiekty nie są ważne jako React child. Jeśli chcesz renderować kolekcję elementów podrzędnych , użyj zamiast niej tablicy lub zawiń obiekt przy użyciu createFragment (object) z dodatków React. Sprawdź metodę renderowania z View.

constructor(props){ 
    super(props); 
    this.state = {timeElapsed: null}; 
    } 

startStopButton(){ 
    return <TouchableHighlight underlayColor="gray" onPress={this.handleStartPress.bind(this)}> 
     <Text>Start</Text> 
     </TouchableHighlight> 
    } 

handleStartPress(){ 
     var startTime = new Date(); 




     setInterval(()=>{ 
     this.setState({timeElapsed: new Date()}) 
     }, 1000); 
    } 
render(){ 
return(
    <View style={styles.container}> 
    <View style={[styles.header]}> 
     <View style={[styles.timerContainer, this.borderColor('#ff6666')]}> 
     {this.state.timeElapsed} 
     </View> 
     <View style={[styles.buttonsContainer, this.borderColor('#558000')]}> 
     {this.startStopButton()} 
     {this.lapButton()} 
     </View> 
    </View> 
    </View> 
); 


} 
+0

można pokazać swoją metodę renderowania? –

+0

Nie widać niczego, co mogłoby nam pomóc w debugowaniu, metoda renderowania byłaby tam, gdzie zaczynam. – theBrezilien

+0

Witam Właśnie dodałem metodę renderowania. Dziękujemy – Mesmerize86

Odpowiedz

25

timeElapsed jest obiektem, reagują nie wie, jak czynią to:

<View style={[styles.timerContainer, this.borderColor('#ff6666')]}> 
    {this.state.timeElapsed} 
    </View> 

Spróbuj zmienić this.state.timeElapsed na sznurku jak na przykład:

<View style={[styles.timerContainer, this.borderColor('#ff6666')]}> 
    {this.state.timeElapsed.toString()} 
    </View> 
+0

Dziękuję Emilio za wyjaśnienie i przykład. To zadziałało dla mnie. Jest jeszcze jeden błąd, jaki mam, ale go rozwiązałem. Ale nie jestem pewien, dlaczego to działa. – Mesmerize86

+0

Instaluję wtyczki stron trzecich minut-sekund-milisekund i czas zwinięty. '{formatTime (this.state.timeElapsed)}'

 'handleStartPress(){ var startTime = new Date(); setInterval(()=>{ console.log(this.setState({timeElapsed : new Date()})); this.setState({timeElapsed: new Date()}) }, 30); }'
Teraz otrzymuję swój czasElapsed undefined. – Mesmerize86

0
<Note note={ 
<p>{(new Date(updated_at)).toString()}</p> 
} /> 

W tym przypadku uwaga jest moim elementem potomnym, a ja przekazałem datę jak wyżej i zadziałało to dla mnie.

Wyjście Pass date to React Child

Powiązane problemy