是否可以在 Blazor 页面中呈现 React 组件?我尝试将脚本标签添加到 Blazor 页面,但 Blazor 不允许添加脚本标签。
感谢您的回答。
最佳答案
Is it possible to render a react component inside a Blazor page?
是的,这是可能的。 React 是一个 javascript 库,与将 jquery 添加到 Blazor 应用程序的方式相同,您也可以将 React 添加到其中,但它有一些缺点。
I tried adding script tags to the Blazor page, but Blazor does not allow adding script tags.
事实上,您不能在.razor
文件中添加脚本标签,您应该添加的地方是在_Host.cshtml
文件中
现在您可能会问,如何将 React 添加到 Blazor 应用程序中?嗯..有点复杂。
您需要做的是配置一个 webpack 以从 React 生成所有文件,然后放入 wwwroot
并引用 _Host.cshtml
文件中的所有脚本和链接.
然后你需要在 window
上附加一个函数来渲染你的 React 组件,比如
// index.js from react
window.renderReactApp = function() {
ReactDOM.render(<App />, document.getElementById("react-div"))
}
将 React 添加到 Blazor 应用程序中的缺点
1. React 和 Blazor 之间的通信。
如果您需要在 React 和 Blazor 之间传递数据(状态),那将是一场巨大的斗争,您需要创建某种 Flux 模式来充当两者之间的桥梁。这需要时间来完成并且使用它可能会造成混淆。
2. Blazor 可能做的事情你付出了太多的努力
如果您已经在使用 Blazor 并想添加 React,则需要有充分的理由这样做。否则,您将把太多时间浪费在您本可以在 Blazor 中轻松完成的事情上
将 React 添加到 Blazor 的充分理由
有很多 js 库可能无法使用 Blazor 创建,或者如果有人创建,可能只是 js 的包装器和...
到目前为止,Blazor 没有提供任何方法让您做 webpack 可以做的事情,所以在某些情况下您有很多 javascript 或 css,您会想要配置一个 webpack 来缩小/做你想做的事情需要那些文件。在这种情况下,如果您已经为此配置了 webpack,向其添加 react 将没有问题。
其中一个例子是 MatBlazor .他们使用了大量来自 Material 设计 Web 组件的 js 和 css,所以他们使用 webpack捆绑一切。他们不使用 React,但它是如何在 blazor 中使用 webpack 的示例(要在 blazor 应用程序中使用 React,您需要做一些事情)
关于c# - 在 Blazor 页面中渲染 react 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61487266/