Size: a a a

2021 January 25

DD

Dmytro Dovhan in React Kyiv
Eugene M
return <>{children}</> попробуй
помогло, спасибо, не сталкивался с таким еще
источник

DS

Del Spooner in React Kyiv
это не совсем косяк в TS, React.Node  = ReactChild | ReactFragment | ReactPortal | boolean | null | undefined, а компонент react не может возвращать undefined
источник

DS

Del Spooner in React Kyiv
если компонент предпологает, что children всегда есть -  можно сделать что-то типа {children: NonNullable<$React.Node>}
источник

DS

Del Spooner in React Kyiv
( может есть лучше вериант)
источник

EM

Eugene M in React Kyiv
не вижу проблемы с фрагментом, можно конечно чекать на undefind и возвращать null, но если я не ошибаюсь там еще есть проблема со строками
источник

DS

Del Spooner in React Kyiv
дело не в проблеме, а в логике компонента, я описал кейс когда компонент обязательно ждет  children
источник

DS

Del Spooner in React Kyiv
если задача просто успокоить TS, то ничего плохого в решении с фрагментом нету
источник

EM

Eugene M in React Kyiv
@Sinled просто возвращай всегда JSX.Element, если строки или undefind оборачиваешь в фрагмент, это универсальное решение не зависимо от логики компонента
источник

DB

Dima Bildin in React Kyiv
Eugene M
@Sinled просто возвращай всегда JSX.Element, если строки или undefind оборачиваешь в фрагмент, это универсальное решение не зависимо от логики компонента
Имеется в виду, что если компонент Test ожидает всегда, что у него есть children, то стоит в его пропах это описать
источник

DD

Dmytro Dovhan in React Kyiv
Del Spooner
если компонент предпологает, что children всегда есть -  можно сделать что-то типа {children: NonNullable<$React.Node>}
это было первое что я попробовал, пробовал еще children || null но так тоже не работало
источник

EM

Eugene M in React Kyiv
Dima Bildin
Имеется в виду, что если компонент Test ожидает всегда, что у него есть children, то стоит в его пропах это описать
очевидно, но вопрос изначально в другом)
источник

DS

Del Spooner in React Kyiv
Dmytro Dovhan
это было первое что я попробовал, пробовал еще children || null но так тоже не работало
я мог не правильно описать как избавится от undefiend, но если сделать это правильно - решит вопрос
источник

DS

Del Spooner in React Kyiv
Eugene M
очевидно, но вопрос изначально в другом)
вопрос был о том почему ругается TS
источник

DD

Dmytro Dovhan in React Kyiv
Del Spooner
я мог не правильно описать как избавится от undefiend, но если сделать это правильно - решит вопрос
я правильно понял?

const Test: FC<{
   children: React.ReactNode;
}> = ({ children }) => {
   const { systemErrors, runtimeErrors } = useErrorService();
   const hasNoCriticalErrors = isEmpty(systemErrors) && isEmpty(runtimeErrors);

   if (hasNoCriticalErrors) {
       return children;
   }

   return <ErrorPage systemErrors={systemErrors} runtimeErrors={runtimeErrors} />;
};

?
источник

DD

Dmytro Dovhan in React Kyiv
так и c nonNullable тоже не работает
источник

DS

Del Spooner in React Kyiv
type PropsT = {
 children: NonNullable<ReactNode>,
}

const Test: FC<PropsT> = ({ children }) => {
   const { systemErrors, runtimeErrors } = useErrorService();
   const hasNoCriticalErrors = isEmpty(systemErrors) && isEmpty(runtimeErrors);

   if (hasNoCriticalErrors) {
       return children;
   }

   return <ErrorPage systemErrors={systemErrors} runtimeErrors={runtimeErrors} />;
};
источник

DS

Del Spooner in React Kyiv
как то так
источник

DS

Del Spooner in React Kyiv
Dmytro Dovhan
так и c nonNullable тоже не работает
поигрался с TS. и похоже, что какая-то проблема в типизации все же есть, так и не получилость сделать компонент с required  children
источник

DS

Del Spooner in React Kyiv
источник

DS

Del Spooner in React Kyiv
странные вещи происходят
источник