我正在使用Leafet從應用中更大的地圖組件中提取一個很小的組件,並且將JSX包含到Leafet DivIcon的html字符串中似乎是不可能的。我應該使用ReactDOMServer.renderToString()還是其他方式將反應組件呈現給字符串?
更大的地圖渲染組成部分:
render() {
const {tobject, strings} = this.props
let circle = classes.redCircle
if (tobject.lastPoint.activeEvents.ignition) {
circle = classes.greenCircle
}
const icon = new window. L. DivIcon({
html:
` <div class= ${classes.tobjecticon}><span class= ${classes.tobjecticontext}><div class= ${circle}></div></span></div> `
})
新extacted組件StatusCircle.js:
import React from 'react'
import classes from './StatusCircle.scss'
export const StatusCircle = ({ status}) => {
let circle = classes.redCircle
if (status) {
circle = classes.greenCircle
}
return (
<div className={circle} ></div>
)
}
export default StatusCircle
我的問題似乎類似於this one。我試過renderToString() StatusCircle,但使用ReactDOM(不推薦使用)而不是ReactDOMServer,它沒有工作,說沒有這樣的功能。是否可以使用ReactDOMServer.renderToString()或.renderToStaticMarkup()來實現這一目標,還是更好地保持不變而不提取?
警告:_renderNewRootComponent():渲染方法應該道具和狀態的純函數;不允許觸發渲染的嵌套組件更新。如有必要,觸發componentDidUpdate中的嵌套更新。檢查StatusCircle的渲染方法。 < - 我在render()中使用renderDOM時得到了這個警告,否則它會給出預期的結果 – krankuba