我需要从给定端点的静态HTML渲染横幅。我创建了一个React组件,该组件给定HTML字符串,呈现内容,RenderHtml
是名称。我需要显示5条横幅广告,以显示如何从5个不同的URL获取内容。为此,我创建了一个新组件,该组件提供了一个URL,获取内容,然后呈现RenderHtml
组件,让我们将此组件调用Banner
,这样我就可以对所有横幅重复使用同一组件(至少是这个主意)。
我正在使用Next.js,第一个想法是获取getInitialProps
中的URL内容,但是问题是我将需要创建html
道具来返回{{1 }}功能
getInitialProps
这是我的第一种方法,但是没有用,因为我需要从另一个道具生成一个道具(我不知道该怎么做,我不喜欢用两个道具和一个道具创建组件的想法。其中的一个会从另一个中生成。
第二种方法是在Banner.getInitialProps = async () => {
const bannerUrl = ...//need to get it from props;
const { data } = await fetch(bannerUrl);
return {
html: data // need this prop to call RenderHtml component
};
}
钩子中获取HTML。
useEffect
并以...
const [html, setHtml] = useState();
useEffect(async () => {
const bannerUrl = ...//from props;
const { data } = await fetch(bannerUrl);
setHtml(data)
});
状态调用RenderHtml
组件。这产生了休闲的错误:
html
我建议进行Can't perform a React state update on an unmounted component.
操作。
知道如何解决这个问题吗?