我目前有一个React应用,正在尝试将其转换为Blazor WebAssembly应用。React应用程序具有导入JavaScript库的组件,可以在此处查看示例代码。如果charting_library
未授予访问权限,则无法访问导入的代码本身,但这不应成为回答此问题的问题。
在我的React应用程序中,按照示例代码,我有以下代码(为简洁起见):
import { widget } from '../../charting_library/charting_library.min';
export class TVChartContainer extends React.PureComponent {
tvWidget = null;
componentDidMount() {
const widgetOptions = {
// Various properties set here.
};
const tvWidget = new widget(widgetOptions);
this.tvWidget = tvWidget;
}
render() {
return (
<div className={'TVChartContainer'} />
);
}
}
我已经阅读了有关Blazor组件和Blazor JavaScript interop的文章,并尝试以与charting_library
我的React应用程序相同的Blazor方式,使用JavaScript interop实现一个组件以使用我正在使用的JavaScript 。因此,按照上的说明IJSRuntime
,我在下面添加了charting_library
JavaScript代码wwwroot
,并将以下内容添加到index.html
:
<script src="charting_library/charting_library.min.js"></script>
然后Components\TradingViewChartComponent.razor
,我以执行此操作的方式开始创建了一个简单的Blazor组件(),但我强烈希望自己走在完全错误的轨道上:
@inject IJSRuntime JSRuntime
<h3>TradingViewChartComponent</h3>
<div>
@DisplayTradingViewChart()
</div>
@code {
public async Task DisplayTradingViewChart()
{
await JSRuntime.InvokeVoidAsync("new widget()");
}
}
还不清楚我如何在中使用此组件Index.razor
。以下导致错误:
<TradingViewChartComponent />
错误是:
“找到了带有意外名称'TradingViewChartComponent'的标记元素。如果要用作组件,请为其名称空间添加@using指令。”
它指的是模板示例文件SurveyPrompt.razor
。我不确定如何建立连接,但是也许在其余代码构建时会自动解决吗?这不是因为我收到了其他与jQuery有关的错误,例如“找不到'jquery'的类型定义文件”。这在charting_library
代码本身之内,我想这不是React应用程序中的问题,因为create-react-app
用作Visual Studio React应用程序模板的一部分的会添加必要的依赖项,例如jQuery。那么如何在Blazor应用程序中确保这种依赖性呢?
这里的主要问题是,如何像在React应用程序中一样使用Blazor应用程序中的JavaScript库?其他问题,例如包含Blazor组件Index.razor
和我收到的jQuery错误,都是奖励问题,如果可以单独回答,则不需要在此处回答(我不介意为他们创建单独的问题)。
感谢任何人可以提供的任何帮助!我熟悉C#和React,但对Blazor还是陌生的,而且我的JavaScript知识很有限。
渲染Blazor应用后,应执行JavaScript组件和代码。最合适的方法是使用组件生命周期事件OnAfterRender(bool firstRender)和OnAfterRenderAsync(bool firstRender)中的JSInterop
此代码:await JSRuntime.InvokeVoidAsync("new widget()");
,应放在这两种方法之一中,并会自动调用,例如创建和初始化JavaScript小部件。
您是否创建了此组件?<TradingViewChartComponent />
我猜不,所以您怎么能尝试使用它。没有这样的组件
@DisplayTradingViewChart()
呈现页面时,这正在调用DisplayTradingViewChart()方法。可能会导致错误。再次使用上面的两种方法。
这是一个答案的链接,该答案演示了如何在Blazor中使用JavaScript。
希望这可以帮助...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句