配列からデータを取得しようとし、マップ関数を使用してコンテンツをレンダリングしています。見る
**{this.lapsList()}**
および関連
**lapsList()**
私がやろうとしていることを理解する機能。結果は何も表示されません(ビューの下のビューなど)ここに私の簡略化されたコードがあります:
class StopWatch extends Component {
constructor(props) {
super(props);
this.state = {
laps: []
};
}
render() {
return (
<View style={styles.container}>
<View style={styles.footer}>
<View><Text>coucou test</Text></View>
{this.lapsList()}
</View>
</View>
)
}
lapsList() {
this.state.laps.map((data) => {
return (
<View><Text>{data.time}</Text></View>
)
})
}
_handlePressLap() {
console.log("press lap");
if (!this.state.isRunning) {
this.setState({
laps: []
})
return
}
let laps = this.state.laps.concat([{'time': this.state.timeElapsed}]);
this.setState({
laps: laps
})
console.log(laps);
}
}
次のように、マップされた配列をreturn
することを忘れないでください:
lapsList() {
return this.state.laps.map((data) => {
return (
<View><Text>{data.time}</Text></View>
)
})
}
map()
メソッドのリファレンス: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
lapsList
関数をクラスからレンダリング関数に移動してみてください:
render() {
const lapsList = this.state.laps.map((data) => {
return (
<View><Text>{data.time}</Text></View>
)
})
return (
<View style={styles.container}>
<View style={styles.footer}>
<View><Text>coucou test</Text></View>
{lapsList}
</View>
</View>
)
}
関数lapsList()
の最初に戻るのを忘れた
lapsList() {
render(
this.state.laps.map((data) => {
return (
<View><Text>{data.time}</Text></View>
);
})
);
}
lapsList() {
return this.state.laps.map((data) => {
return (
<View><Text>{data.time}</Text></View>
)
})
}
地図を返すのを忘れました。このコードは問題を解決します。