[英]cannot be used as a JSX component Its return type string | Element is not a valid JSX element Type 'string' is not assignable to type 'Element | null'
I created a react function EventDateTooltip:我创建了一个反应 function EventDateTooltip:
import React from 'react';
import { endOfDay, isToday, isTomorrow, isYesterday } from 'date-fns';
import { useTranslation } from 'react-i18next';
import I18nWrapper from '../i18n-wrapper';
import DateFormater from '../formaters/date-formater';
const EventDateTooltip = ({ date }: { date: string }) => {
const { t } = useTranslation();
const dateTooltip = endOfDay(new Date(date));
if (isTomorrow(dateTooltip)) return t('tooltip.event.date.tomorrow');
if (isYesterday(dateTooltip)) return t('tooltip.event.date.yesterday');
if (isToday(dateTooltip)) return t('tooltip.event.date.today');
return (
<>
<span key={date.toString()}>
<I18nWrapper translateKey="tooltip.event.date.the" />{' '}
<DateFormater dateToFomat={date} formater="full-date" />
</span>
</>
);
};
export default EventDateTooltip;
this function return a text and a translated date.这个 function 返回文本和翻译日期。
when I call this function on another component:当我在另一个组件上调用这个 function 时:
<EventDateTooltip date={props.event.endDate}></EventDateTooltip>;
the call returns the following error message:该调用返回以下错误消息:
Its return type 'string | Element' is not a valid JSX element.
Type 'string' is not assignable to type 'Element | null'. TS2786
has anyone got the following message?有没有人收到以下消息?
As stated in this answer , currently TypeScript's React types do not allow you to return a string from a React component and include that in a component tree.如本回答所述,目前 TypeScript 的 React 类型不允许您从 React 组件返回字符串并将其包含在组件树中。
You can wrap your strings with fragments to avoid the error:您可以用片段包装字符串以避免错误:
// [...]
if (isTomorrow(dateTooltip)) return <>t('tooltip.event.date.tomorrow')</>;
if (isYesterday(dateTooltip)) return <>t('tooltip.event.date.yesterday')</>;
if (isToday(dateTooltip)) return <>t('tooltip.event.date.today')</>;
// [...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.