मैं Leaflet (react-leaflet के माध्यम से) का उपयोग कर एक ऐप पर काम कर रहा हूं। पत्रक सीधे डोम में हेरफेर करता है। प्रतिक्रिया-पुस्तिका पुस्तकालय उसमें बदलाव नहीं करता है, यह आपको केवल प्रतिक्रिया घटक देता है जिसका उपयोग आप अपने पत्रक मानचित्र को एक प्रतिक्रिया-अनुकूल तरीके से नियंत्रित करने के लिए कर सकते हैं।क्या उन क्षेत्रों में ब्राउज़र में ReactDOMServer.renderToString का उपयोग करना ठीक है जहां प्रतिक्रिया सीधे डोम का प्रबंधन नहीं कर रही है?
इस ऐप में, मैं कस्टम मैप मार्करों का उपयोग करना चाहता हूं जो कुछ साधारण तत्वों वाले divs हैं। पत्रक में ऐसा करने का तरीका अपने मार्कर की icon
संपत्ति को DivIcon पर सेट करना है, जिसमें आप अपना कस्टम HTML सेट कर सकते हैं। आप HTML आइकन युक्त स्ट्रिंग में DivIcon की html
प्रॉपर्टी सेट करके उस आंतरिक HTML को सेट करते हैं। मेरे मामले में, मैं चाहता हूं कि HTML को एक प्रतिक्रिया घटक से प्रस्तुत किया जाए।
ऐसा करने में, ऐसा लगता है सही दृष्टिकोण की तरह ReactDOMServer.renderToString()
उपयोग करने के लिए घटक है कि मैं एक स्ट्रिंग है, जो मैं तो DivIcon की html
संपत्ति के रूप में स्थापित करेगा में मैप मार्कर के अंदर चाहते रेंडर करने के लिए है:
MyMarker.js:
import React, { Component } from 'react'
import { renderToString } from 'react-dom/server'
import { Marker } from 'react-leaflet'
import { divIcon } from 'leaflet'
import MarkerContents from './MarkerContents'
export class MyMarker extends Component {
render() {
const markerContents = renderToString(<MarkerContents data={this.props.data} />)
const myDivIcon = divIcon({
className: 'my-marker',
html: markerContents
})
return (
<Marker
position={this.props.position}
icon={myDivIcon} />
)
}
}
हालांकि, React docs के अनुसार:
यह [रेंडर टॉस्ट्रिंग] केवल सर्वर पर उपयोग किया जाना चाहिए।
क्या यह एक सख्त नियम है, या क्या यह केवल लोगों को डीओएम के रिएक्टडॉम के कुशल प्रबंधन को रोकने से रोकने के लिए है?
मैं जो कुछ भी कर रहा हूं उसे पूरा करने के लिए मैं एक और (बेहतर) तरीका नहीं सोच सकता। किसी भी टिप्पणी या विचारों की सराहना की जाएगी।
मैं अगर यह मदद करेंगे यकीन नहीं है लेकिन: https://facebook.github.io/react/tips/dangerously-set -inner-html.html और http://stackoverflow.com/questions/21285262/react-leave-the-contents-of-a-component-alone – lux
धन्यवाद, लेकिन मैं वास्तव में कहीं भी आंतरिक HTML को मैन्युअल रूप से सेट करने की कोशिश नहीं कर रहा हूं। मैं केवल प्रतिक्रिया घटकों से एक HTML स्ट्रिंग तैयार करना चाहता हूं जिसे मैं एक पत्रक DivIcon में उपयोग कर सकता हूं, और मुझे आश्चर्य है कि क्या कोई अच्छा कारण है कि इसे पूरा करने के लिए 'ReactDOMServer.renderToString()' का उपयोग न करें। हालांकि, एचटीएमएल को स्वच्छ करने के बारे में मेहनत करने के लिए निश्चित रूप से एक अच्छा अनुस्मारक है। –
हाँ, मुझे लगता है कि ध्रुवीय विपरीत है, हुह? एकमात्र तरीका मैं शुद्ध एचटीएमएल को रेंडर से निकालने में सक्षम हूं: http://codepen.io/mikechabot/pen/xVMwgN?editors=0011 जैसा कि आप देख सकते हैं, हम ' "