收藏房源(二)——实现收藏-判断是否登录 & 未登录跳转登录页 & 已登录进行收藏操作
- 房源详情页面点击收藏按钮进行收藏
- 给收藏按钮绑定单击事件,创建方法 handleFavorite 作为事件处理程序。
- 判断是否登录。
- 如果未登录,则使用 Modal.alert 提示用户是否去登录。
- 如果点击取消,则不做任何操作。
- 如果点击去登录,就跳转到登录页面
- 根据 isFavorite 判断,当前房源是否收藏
- 如果未收藏,就调用添加收藏接口,添加收藏。
- 如果已收藏,就调用删除收藏接口,删除收藏。
handleFavorite = async () => {
// 实现收藏操作:判断是否登录,如果没有登录就跳转到登录页面
let isAuth = getToken()
if (!isAuth) {
alert('提示', '登录后才能收藏房源,是否去登录?', [
{ text: '取消' },
{
text: '去登录',
onPress: () => {
// 跳转到登录页面
this.props.history.push('/login')
}
}
])
}
// 如果已经登录,就进行收藏操作
// 如果之前已经收藏那么,就取消收藏;反之就进行收藏
let { isFavorite, houseInfo } = this.state
if (isFavorite) {
// 已收藏,需要取消收藏
let res = await API.delete('/user/favorites/' + houseInfo.houseCode)
// 取消成功
this.setState({
isFavorite: false
})
} else {
// 未收藏,需要进行收藏
let res = await API.post('/user/favorites/' + houseInfo.houseCode)
if(res.data.status === 200) {
// 收藏成功
this.setState({
isFavorite: true
})
}
}
}
取消收藏