这节有点难,问题有点多
来源:9-2 收藏功能的实现-1【实战应用】
weixin_慕先生3065687
2019-12-17
- 列表项
BaseItem中,
onItemClick() {
this.props.onSelect(isFavorite => {
this.setFavoriteState(isFavorite);
});
}
本质上都是itmeclick,点击事件,
对应的都是对这个空间站的点击
<TouchableOpacity
- onPress={this.props.onSelect}
+ onPress={()=>this.onItemClick()}
这样分开的目的是什么?有点懵圈。
- 列表项
DetailPage的constuctor中
this.params = this.props.navigation.state.params;
const {projectModel,flag} = this.params;
关于projectModel,flag这两项数据怎么在DetailPage中获取到的?是什么时候?用怎样的方式传过去的?按道理projectModel这个数据是通过popular和trending这两个的action传递过来的。只能在PopularPage和TrendingPage中获取,DetailPage中获取不到的吧?
同样的以为下面的projectModel.isFavorite和callback
this.state = {
title: title,
url: this.url,
-
canGoBack: false
-
canGoBack: false,
-
isFavorite:projectModel.isFavorite };
-
onFavoriteButtonClick(){
-
const {projectModel,callback}=this.params;
写回答
1回答
-
1.两种实现方式效果是一样的,之所以包个方法出来是为了方便以后的扩展;
2.projectModel与flag是在跳转到详情页时传递过去的:
renderItem(data) { const {theme} = this.props; const item = data.item; const Item = this.storeName === FLAG_STORAGE.flag_popular ? PopularItem : TrendingItem; return <Item theme={theme} projectModel={item} onSelect={(callback) => { NavigationUtil.goPage({ theme, projectModel: item, flag: this.storeName, callback, }, 'DetailPage'); }} onFavorite={(item, isFavorite) => this.onFavorite(item, isFavorite)} />; }
可以对照着这块的课程源码查看下:https://git.imooc.com/coding-304/GitHub_Advanced/src/master/js/page/FavoritePage.js#L142
112019-12-18
相似问题