Как использовать перехватчики реакции, чтобы проверить реквизиты и отобразить нужный компонент? (HOC)

Изначально в реквизите нет страны собственности. Итак, мне нужно показать сообщение о загрузке, если в реквизите нет свойства страны, но проблема в том, что он продолжает отображать элемент загрузки, даже если страна свойства существует. Так что загородная недвижимость появится через некоторое время, и мы должны ее проверить. Я не уверен, что делаю это правильно.

const loadingComponent = (WrappedComponent) => {
  return (props) => {
    const [loading, setLoading] = useState(true);

    useEffect(() => {
      if (props.country) return setLoading(false);
    }, [props]);

    return !loading ? <WrappedComponent {...props} /> : <p>Loading ...</p>;
  };
};

Я стараюсь избегать использования компонентов порядка классов. Или какие-нибудь альтернативные способы создать загрузку hoc? Спасибо

1 ответ

В этом случае вам действительно не нужно состояние. Если опора существует, визуализируйте компонент, если нет - визуализируйте загрузку:

const loadingComponent = WrappedComponent =>
  props => 
    props.country ? 
      <WrappedComponent {...props} /> 
      : 
      <p>Loading ...</p>;

Я бы создал более общий компонент, который принимает предикат для проверки необходимости загрузки:

const loadingComponent = (predicate, WrappedComponent) =>
  props => 
    predicate(props) ? 
      <WrappedComponent {...props} /> 
      : 
      <p>Loading ...</p>;

И тогда вы можете использовать это так:

const Wrapped = (props => 'country' in props, ComponentX);

Или проверьте другие вещи

const Wrapped = (({ a }) => a < 5, ComponentY);
Другие вопросы по тегам