Попытка вернуть несколько значений из метода реагирования функционального компонента - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь вернуть несколько значений из приведенного ниже метода и получаю ошибку, такую ​​как назначение свойства, ожидаемое в операторе return, и мой метод выглядит следующим образом:

export const useSectionQuery = (query, resultFieldName, updateState, transform, initialRevisionId) => {

  const [completed, setCompleted] = useState(false);
  let  transformed;
  const { loading, error } = useQuery(query, {
    variables: {
      where: initialRevisionId ? { initialRevisionId } : { isApproved: true },
      order_by: null
    },
    fetchPolicy: 'network-only',
    onCompleted: data => {
     transformed = transform ? transform(data[resultFieldName]) : data[resultFieldName];
      updateState(draft => {
        draft[resultFieldName] = transformed;
      });
      setCompleted(true);
    }
  });
  if (error) return errorRedirectElement(error, resultFieldName);
  return {(!completed || loading) && loadingElement, transformed };
};

и получаю ошибку property assignment is expected здесь ниже в строке

 return {(!completed || loading) && loadingElement, transformed }

1 Ответ

1 голос
/ 21 марта 2020

вы не выполняете рендеринг с JSX, вам нужно присвоить (!completed || loading) && loadingElement имени свойства

, поэтому должно быть

return {
  element: (!completed || loading) ? loadingElement : null, 
  transformed
}

, если вы делаете это в render() Вы могли бы сделать это, и это будет работать. Не при возврате объекта.

render() {
  {(!completed || loading) && loadingElement} 
}

...