c# - 在 Blazor 页面中渲染 react 组件

标签 c# asp.net reactjs razor blazor

是否可以在 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/

相关文章:

c# - Like 不会转义特殊字符 NHibernate

c# - 什么是NullReferenceException,如何解决?

ASP.NET CORE 2.1 FromRoute 和 FromBody 模型绑定(bind)

reactjs - 如何使用react-dnd从 Material UI拖放TableHeaderColumn?

c# - 如何从文件夹读取文本文件并将其转换为 MySQL 中的表

c# - SqlDataReader 在访问值方面的性能差异?

asp.net - 当页面位于 iFrame 中时, session 变量未保存

javascript - Material UI <TableCell> 组件不会动态渲染数据集

reactjs - Redux reducer - 使用 forEach 修改数组

c# - 浏览 FindContours 方法找到的轮廓层次结构?