我使用的是React v.16.12.0和@MaterialUI/Core v4.8.1。
我正在尝试为React传单标记创建自定义图标。图标是来自Material-UI的Fab
组件。为此,我需要将HTML字符串传递给L.DivIcon
(DivIcon Docs)传单组件,因此我使用RenderToString()
方法从React-DOM/Server
。
它会抛出一个错误:
警告:UseLayouteFffect在服务器上不执行任何操作,因为它的效果无法编码为服务器呈现器的输出格式。这将导致初始、非水合UI和预期UI之间的不匹配。为了避免这种情况,UseLayouteFffect应该只用于在客户端上以独占方式呈现的组件中。NoSsr中的按钮中的ForwardRef(ButtonBase)中的WithStyles(ForwardRef(ButtonBase))中的ForwardRef(Fab)中的WithStyles(ForwardRef(Fab))(在src/index.js:9)
而我没有使用uselayouteffect。
这里有一个简单的例子:
import React from "react";
import ReactDOM from "react-dom";
import ReactDOMServer from 'react-dom/server';
import Fab from '@material-ui/core/Fab';
function App() {
return ReactDOMServer.renderToString(
<Fab size="small" variant="extended">
Test
</Fab>);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
在线:https://codesandbox.io/s/material-ui-rendertoString-tc90b
它为什么要抛出那个错误?这个代码有什么不对的?有没有其他方法可以从Material-UI组件生成HTML-String,以便将其作为图标传递给传单标记?
我使用RenderToStaticMarkup
呈现自定义标记。标记正在呈现,但仍然得到警告。
import React, { Component } from "react";
import ReactDOM from "react-dom";
import { renderToStaticMarkup } from "react-dom/server";
import { divIcon } from "leaflet";
import { Map, TileLayer, Marker, Popup } from "react-leaflet";
import Fab from "@material-ui/core/Fab";
import "./styles.css";
class App extends Component {
state = {
lat: 51.505,
lng: -0.091,
zoom: 13
};
render() {
const position = [this.state.lat, this.state.lng];
const iconMarkup = renderToStaticMarkup(
<Fab size="small" variant="extended">
Test
</Fab>
);
const customMarkerIcon = divIcon({
html: iconMarkup
});
return (
<div>
<Map center={position} zoom={this.state.zoom}>
<TileLayer
attribution='&copy <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url="https://{s}.tile.osm.org/{z}/{x}/{y}.png"
/>
<Marker position={position} icon={customMarkerIcon}>
<Popup>
A pretty CSS3 popup. <br /> Easily customizable.
</Popup>
</Marker>
</Map>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
工作代码:https://codesandbox.io/s/react-leaflet-icon-material-MX1IU
我一直在尝试一些组件,这些组件执行react-cache风格的事情,并在render方法中执行web服务调用,将promise抛出到React.Suspense组件,并在数据存在时重新呈现。它们调用web服务,检查响应,并根据响应呈现或抛出错误到错误边界。我注意到,每当在组件中抛出错误时,它都会呈现两次。第一次callstack看起来正常,第二次callstack包括对invokeGuardedC
我有两个反应组件Post和Postform。Posts是显示从api获取的帖子列表的组件。Postform组件是一种创建新帖子,然后更新帖子组件的表单。我在Posts中声明了一个函数addPost()为全局函数,并将其绑定在Posts构造函数中。然后,addPost()方法从Posts导出,并导入到Postform组件中,在那里我想使用导入的addPost()方法更新Posts组件的状态 但是,我
我得到而调用 Java语言lang.StackOverflowerr:org处为null。阿帕奇。平民登录中。日志适配器$Slf4jLog。isDebugEnabled(LogAdapter.java:300)~[spring-jcl-5.1.10.RELEASE.jar:5.1.10.RELEASE]位于org。springframework。安全身份验证。ProviderManager。在or
我正在遵循JavaFX教程并编写了以下代码。 将导入所有必需的头文件。 主要的Java语言 主要的fxml(使用SceneBuilder创建) 堆栈跟踪 我尝试了与getResource(“Main.fxml”)的每一种组合,包括以各种可能的方式使用相对路径和绝对路径,但我还是遇到了错误。代码与该教程完全相同。
我正在编码一个不和谐机器人,它检查用户是否在我的不和谐服务器上,以及他是否有某个角色。然而,我得到一个错误消息,如果用户不是在我的不和,尽管使用捕捉。我有以下代码: 现在,错误消息是: (节点: 15184)UnhandledPromiseRejtionWarning: DiscordAPIError:未知成员在请求Handler.execute(c:\用户\用户\桌面\DiscordBot\My
问题内容: 我正在使用iReport构建jaspersoft报告,并且正在使用Fishbowl作为我的DBMS。 我建立了表,并在iReport中显示了我的表是关系型的,但是由于某种原因,它使我出错并且无法运行。它应该非常简单。我要输入邮政编码,日期范围或州名,并输出productName,已实现的总数量,邮政编码和州名的缩写。 当我确实将报告上载到Fishbowl时,它可以运行,但最终崩溃并显示