最终效果
1.ES6知识点:解构赋值+重命名
let obj ={a,{b:2}}
const {a} = obj // 传统解构赋值
const {a:{b}} = obj // 连续解构赋值
const {a:{b:value}} = obj // 连续解构赋值+重命名
2.消息订阅与发布机制
- 先订阅,再发布
- 适用于任何组件内的通信
- 在 componentWillUnmount() 中取消订阅
// 订阅
this.token = Pubsub.subscribe('updateListState', (_, data) => {
this.setState(data)
})
// 更新信息
Pubsub.publish('updateListState', { isLoading: false, users: data.items })
// 取消订阅
Pubsub.unsubscribe(this.token)
3.fetch发送请求(关注分离设计思想)
要处理请求失败的情况
try {
const reponse = await fetch(`/api1/search/users2?q=${keyword}`)
const data = await reponse.json()
Pubsub.publish('updateListState', { isLoading: false, users: data.items })
} catch (error) {
console.log('请求出错', error)
Pubsub.publish('updateListState', { isLoading: false, err: '请求出错:' + error.message })
}