reactjs - 从 redux 获取数据。为什么我的加载屏幕不起作用?
问题描述
我正在尝试向我的功能组件添加加载屏幕
我正在从 redux 获取数据。
这是我的useEffect
钩子
const {addressList, replyMessage} = useSelector((state) => ({
addressList: state.contactReducer.addressList,
replyMessage: state.contactReducer.replyMessage,
}));
useEffect(() => {
async function anyNameFunction() {
setLoading(true);
await dispatch(fetchAddressList());
}
anyNameFunction();
setLoading(false);
}, []);
如您所见,我正在等待调度,然后将 setLoading 设为 false。
但是,当我尝试渲染组件时,加载屏幕部分永远不会出现。在一定时间后,来自 redux 的数据被渲染。这是为什么?
这是我返回的 JSX
<ScrollView>
{loading && (
<View
style={{
height: windowHeight,
width: windowWidth,
justifyContent: 'center',
alignItems: 'center',
marginBottom: 50,
}}>
<Text>Loading</Text>
<Text>Loading</Text>
<Text>Loading</Text>
<Text>Loading</Text>
<Text>Loading</Text>
{/* <Loading /> */}
</View>
)}
<View style={styles.landingContainer}>
<Image
style={styles.landingContainerImage}
source={require('../../assets/images/AboutUs.jpg')}
/>
<Text style={styles.landingText}>CONTACT RapidoBikes</Text>
</View>
</ScrollView>
解决方案
您好,您的函数是异步的,调用者不会等待,例如代码执行将在 useEffect 内继续,您的函数 anyNameFunction 将具有不同的执行上下文。尝试这个
const {addressList, replyMessage} = useSelector((state) => ({
addressList: state.contactReducer.addressList,
replyMessage: state.contactReducer.replyMessage,
}));
useEffect(() => {
async function anyNameFunction() {
setLoading(true);
await dispatch(fetchAddressList());
setLoading(false);
}
anyNameFunction();
}, []);
推荐阅读
- javascript - 在 Component prop 中使用数组和函数
- c# - WPF MVVM Binding x:Name 不触发方法
- python - 具有多个条件的过滤器迭代
- javascript - 我的函数没有返回预期的输出
- css - 输入字段未垂直对齐到 IE - ReactJS / MaterialUI
- javascript - Angular 10:如何比较两个数组
- python - Pandas 中用于转换列的案例语句
- python - ImageDataGenerator 重新缩放为 [-1,1] 而不是 [0,1]
- docusaurus - docusaurus:使用实时编辑器的示例中的异步等待
- javascript - 为什么正则表达式在表单输入上不正确。Javascript