【发布时间】:2019-12-18 19:10:15
【问题描述】:
我在我的ReactNative 应用程序中使用Context Api 和Hooks。
这是我从 api 获取博客数组的代码
const getBlogPosts = dispatch => {
return async () => {
try {
const response = await jsonServer.get("/blogposts");
dispatch({ type: "get_blogposts", payload: response.data });
} catch (err) {
dispatch({
type: "get_blogposts",
payload: "Something went wrong"
});
}
};
};
const blogReducer = (state, action) => {
switch (action.type) {
case "get_blogposts":
return action.payload;
.....
在这里我的组件文件我正在做类似下面的事情
const IndexScreen = ({ navigation }) => {
const { state, getBlogPosts } = useContext(Context);
useEffect(() => {
getBlogPosts();
}, []);
return (
<View>
<FlatList..../>
{state.length === 0 ? <ProgressBar /> : null}
假设没有博客,那么即使在网络操作完成后,进度条也会一直显示,所以我无法编写上面的代码来显示和显示进度条
现在我尝试在用户调用 getBlogPosts 时触发多次调度,但这会将状态的值从布尔值更改为数组,然后再更改为布尔值。
有没有简单的方法来处理进度条的可见性?
【问题讨论】:
-
你设置了长度吗??
-
@Idan 这是一个博文数组
-
但是,从您的问题来看,尚不清楚什么是状态。我认为这部分将帮助人们/您回答您的问题。也许尝试记录打印并查看返回的内容。答案基于假设。
标签: reactjs react-native react-hooks react-context