如何在 setContent 传单中调用反应组件?
How can I call react component in setContent leaflet?
如何调用setContent中的react js组件?
实际上,我想在弹出传单中插入一个按钮,点击它并调用一个反应组件。
我知道 "reactDomserver.rendertostring" 是一种将组件串成 HTML 的方法。但是当组件变为 HTML 时,无法单击按钮调用另一个组件。
如果有人能帮助我,我将不胜感激。
示例代码如上:
// adding mouse hover popup
hoverPopup = L.popup({ closeButton: false, className: "hover-popup" });
hoverPopup.setContent(`<div>
<div class="icon">
<ul class="menu">
<li class="spread">
<button onclick={()=>CustomComponent()}> Test </button> /////// Here is Error
</li>
</div>`);
marker.on('mouseover', function (e) {
hoverPopup.setLatLng(e.latlng);
hoverPopup.openOn(MAP);
});
首先,您需要更改 Html 内容中的“onclick”功能。这是纯粹的 html 而不是正确的语法。
错误:
onclick={()=>CustomComponent()}
正确:
onclick="CustomComponent()"
之后,您可以使用 useEffect 监听内容变化,如果内容存在,您可以使用纯 javascript 添加点击事件。像这样;
演示:https://codesandbox.io/s/Whosebug-69979099-35hyb?file=/src/App.js
export default function App() {
const [content, setContent] = useState(null);
useEffect(() => {
if (content) {
document.getElementById("btn").onclick = (e) => {
e.preventDefault();
eval(e.target.getAttribute("onclick"));
};
}
}, [content]);
const CustomComponent = () => {
alert("Custom Component Func!");
};
return (
<div className="App">
<button onClick={() => {setContent(`<div>
<div class="icon">
<ul class="menu">
<li class="spread">
<button id="btn" onclick="CustomComponent()"> Test </button>
</li>
</div>`);
}}
>
Show Content
</button>
<button>Hide Content</button>
<hr />
{content && <div dangerouslySetInnerHTML={{ __html: content }} />}
<div></div>
</div>
);
}
如何调用setContent中的react js组件? 实际上,我想在弹出传单中插入一个按钮,点击它并调用一个反应组件。 我知道 "reactDomserver.rendertostring" 是一种将组件串成 HTML 的方法。但是当组件变为 HTML 时,无法单击按钮调用另一个组件。 如果有人能帮助我,我将不胜感激。
示例代码如上:
// adding mouse hover popup
hoverPopup = L.popup({ closeButton: false, className: "hover-popup" });
hoverPopup.setContent(`<div>
<div class="icon">
<ul class="menu">
<li class="spread">
<button onclick={()=>CustomComponent()}> Test </button> /////// Here is Error
</li>
</div>`);
marker.on('mouseover', function (e) {
hoverPopup.setLatLng(e.latlng);
hoverPopup.openOn(MAP);
});
首先,您需要更改 Html 内容中的“onclick”功能。这是纯粹的 html 而不是正确的语法。
错误:
onclick={()=>CustomComponent()}
正确:
onclick="CustomComponent()"
之后,您可以使用 useEffect 监听内容变化,如果内容存在,您可以使用纯 javascript 添加点击事件。像这样;
演示:https://codesandbox.io/s/Whosebug-69979099-35hyb?file=/src/App.js
export default function App() {
const [content, setContent] = useState(null);
useEffect(() => {
if (content) {
document.getElementById("btn").onclick = (e) => {
e.preventDefault();
eval(e.target.getAttribute("onclick"));
};
}
}, [content]);
const CustomComponent = () => {
alert("Custom Component Func!");
};
return (
<div className="App">
<button onClick={() => {setContent(`<div>
<div class="icon">
<ul class="menu">
<li class="spread">
<button id="btn" onclick="CustomComponent()"> Test </button>
</li>
</div>`);
}}
>
Show Content
</button>
<button>Hide Content</button>
<hr />
{content && <div dangerouslySetInnerHTML={{ __html: content }} />}
<div></div>
</div>
);
}