reactjs - 是一个使用仅返回api响应的useeffect的函数可以在另一个组件的方法中调用吗?
问题描述
我刚刚阅读了 react useEffect 的文档,他们举了这个例子
import React, { useState, useEffect } from 'react';
function FriendStatus(props) {
const [isOnline, setIsOnline] = useState(null);
useEffect(() => {
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
// Specify how to clean up after this effect:
return function cleanup() {
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
};
});
if (isOnline === null) {
return 'Loading...';
}
return isOnline ? 'Online' : 'Offline';
}
根据这个例子,我可以在其他组件的任何方法中使用它吗?如果是,那怎么办?我是否必须使该方法异步。
解决方案
是的,您将始终使用异步函数进行 API 调用,但在这种情况下,由于 API 调用位于 useEffect 内部,并且请求是在页面呈现后发出的,所以没有问题。Async 方法在其他方法之后使函数加载,而 useEffect 已经具有这种效果。
推荐阅读
- c# - 如何将文件循环转换为 LINQ?
- android - 使用 Android network-security-config 在 Xamarin 应用程序中启动时出现空引用异常
- reactjs - 材料表 React 的选择和远程数据分页
- python - Python - 1 行 if-else 语句的正确语法
- swift - 如何“唯一识别” iPhone 设备?由于不推荐使用 UDID 并且在为同一供应商重新安装应用程序后 UUID 会发生变化?
- typescript - 实例化 dialogflow.IntentsClient() 时出现 Google-gax 问题
- sql - 连接两个表,检查第一个表中的一条记录是否与第二个表中的多条记录匹配
- javascript - 日期显示不正确的年份
- karate - 如何从外部 jar 文件配置空手道项目中的 javascript 文件
- javascript - 如何在不知道索引的情况下过滤数组 3 级深度?得到错误的结果