是否可以在 Blazor 页面内呈现 React 组件?我尝试向 Blazor 页面添加脚本标签,但 Blazor 不允许添加脚本标签。
谢谢你的回答。
是否可以在 Blazor 页面内呈现 React 组件?我尝试向 Blazor 页面添加脚本标签,但 Blazor 不允许添加脚本标签。
谢谢你的回答。
是否可以在 Blazor 页面内呈现 React 组件?
是的,这是可能的。React 是一个 javascript 库,与您可以向 blazor 应用程序添加 jquery 的方式相同,您也可以向其中添加 React,但它有一些缺点。
我尝试向 Blazor 页面添加脚本标签,但 Blazor 不允许添加脚本标签。
事实上,你不能在.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 之间传递数据(状态),这将是一场大斗争,您将需要创建某种 Flux 模式作为两者之间的桥梁。这需要时间来完成并且使用它可能会令人困惑。
如果您已经在使用 Blazor 并想要添加 React,则您需要有非常充分的理由这样做。否则,您将在一些本可以在 Blazor 中轻松完成的事情上浪费太多时间
有很多 js 库可能无法使用 Blazor 创建,或者如果有人这样做,可能只是 js 的包装器,并且......
到目前为止,Blazor 没有给你任何方式来做 webpack 可以做的事情,所以在某些情况下,你有很多 javascript 或 css,你会想要配置一个 webpack 来缩小/做你需要的事情文件。在这种情况下,如果您已经为此配置了 webpack,添加 react 就没有问题了。
其中一个例子是MatBlazor。他们使用了大量来自 Material Design 网页组件的 js 和 css,所以他们使用webpack来打包所有东西。他们不使用 React,但它是如何在 blazor 中使用 webpack 的示例(您需要做一些事情才能在 blazor 应用程序中使用 React)