【发布时间】:2016-02-03 21:29:05
【问题描述】:
我在从我的 React Native ListView 传递状态时遇到问题。
我目前正在尝试扩展此处找到的教程的功能。 https://facebook.github.io/react-native/docs/tutorial.html#content
我想添加按下任何电影并获取更多信息的功能。
这是正在渲染的 ListView
renderMovie(movie) {
this.movie = movie;
return (
<View
style={styles.container}
>
<Image
source={{uri: movie.posters.thumbnail}}
style={styles.thumbnail}
/>
<TouchableHighlight style={styles.rightContainer} onPress={this._onPressMovie.bind(this)}>
<View>
<Text style={styles.title}>{movie.title}</Text>
<Text style={styles.year}>{movie.year}</Text>
</View>
</TouchableHighlight>
</View>
);
}
当onPress 发生时会触发
_onPressMovie(){
this.setState({ showMovieInfo: !this.state.showMovieInfo, movie: this.movie});
}
当this.state.showMovieInfo 为真时,调用前面的 if 语句
render() {
if(!this.state.loaded) {
return this.renderLoadingView();
}
if(this.state.showMovieInfo) {
return this.renderMovieInfo()
}
return (
<ListView
dataSource={this.state.dataSource}
renderRow={this.renderMovie.bind(this)}
style={styles.listView}/>
);
};
不是传递被按下的电影信息,而是传递最后一个被渲染到这里的电影。
renderMovieInfo() {
return (
<TouchableHighlight style={styles.container} onPress={this._onPressMovieInfo.bind(this)}>
<View>
<MovieInfo {...this.state}/>
</View>
</TouchableHighlight>
);
}
【问题讨论】:
标签: javascript mobile reactjs react-native