Функция, которая использует useeffect, который возвращает только ответ API, может вызываться в методе другого компонента? - PullRequest
0 голосов
/ 07 марта 2020

Я просто прочитал документацию о реагировании 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';
}

Согласно этому примеру Могу ли я использовать это в любом другом методе какого-либо другого компонента ? если да то как? должен ли я сделать этот метод asyn c.

1 Ответ

0 голосов
/ 07 марта 2020

Да, вы всегда будете использовать функции asyn c для выполнения вызовов API, но в этом случае, поскольку вызов API находится внутри useEffect и запрос выполняется после рендеринга страницы, проблем нет. Метод Asyn c загружает функцию после других, и useEffect уже имеет этот эффект.

...