【发布时间】:2021-01-24 15:54:54
【问题描述】:
我有一个无限滚动的组件,它调用 fetchList,但是当用户想要刷新列表并再次单击搜索按钮时,应该重置用户列表状态,如何使用钩子正确执行此操作?
const fetchList = async () => {
setState(prevState => ({...prevState,loading:true }));
//postdata settings,etc here
const responseJson = await context.api( ...... );
//...
setState(prevState => {
let userlist = prevState.userlist;
//push new users to userlist here..
return {...prevState,userlist: userlist, nextPage: responseJson.data.nextPage,loading:false}
});
}
Search button onclick:
const startSearch =()=> {
setState(prevState => ({
...prevState, nextPage: 0,userlist:[],newsearch:1}));
}
useEffect(() => {
if(searchstate.newsearch)
{
fetchList();
setState(prevState => ({
...prevState, newsearch:0}));
}
},[searchstate.newsearch]);
有没有更好的方法来做到这一点? 对于类,我只需使用回调即可:
startSearch = async ()=> {
this.setState({nextPage:0, userlist:[]}, this.fetchList);
}
【问题讨论】:
标签: reactjs async-await react-hooks use-effect