如何在React组件类中绑定和调用c#obejct方法
我有一个Cefsharp容器,在其中加载本地节点服务器上托管的react应用程序。我在.net项目中注册了一个c#对象,如下所示:-如何在React组件类中绑定和调用c#obejct方法,c#,reactjs,cefsharp,C#,Reactjs,Cefsharp,我有一个Cefsharp容器,在其中加载本地节点服务器上托管的react应用程序。我在.net项目中注册了一个c#对象,如下所示:- browser.JavascriptObjectRepository.Register("bound", new Client(), isAsync: true, options: BindingOptions.DefaultBinder); 现在,在我的一个react组件类中,我想引用该C#对象的一个方法。我正在做的是,我正在尝试使用 componentW
browser.JavascriptObjectRepository.Register("bound", new Client(), isAsync: true, options: BindingOptions.DefaultBinder);
现在,在我的一个react组件类中,我想引用该C#对象的一个方法。我正在做的是,我正在尝试使用
componentWillMount() {
this.invoke();
}
async invoke() {
const message = await window.bound.message();
this.setState({selectedItem: message});
}
这是我的C#对象:-
但这是行不通的。我得到“绑定未定义错误”。我已经阅读了几十篇文章,但大多数都是在他们的HTML文件中引用CefSharp库,这是他们.Net项目的一部分。但在我的例子中,我没有任何HTML文件,也没有任何CefSharp库。“绑定”是否与javascript中的窗口对象绑定?请建议。请阅读如果您正在开发一个新的应用程序,那么当注册一个对象时,您应该使用
isAsync:true
,因为非异步版本不再开发。@amaitland我已经阅读了这篇文章。这篇文章建议我需要等待CefSharp.BindObjectAsync()绑定后,将c#对象注册为isAsync:true。但我的节点项目中没有引用。我是否需要指出,因为它抛出了相同的错误。请编辑您的问题,以显示您有什么triedI破解了这个问题。我们必须使用ExecuteJavaScriptAsync api从C代码本身执行CefSharp.BindObjectAsync(“boundAsync”),然后访问React应用程序中的公开对象。感谢@amaitland花费您的时间和精力。如果您正在开发一个新的应用程序,那么当注册一个对象时,您应该使用isAsync:true
,因为不再开发非异步版本。@amaitland我已经阅读了这篇文章。这篇文章建议我需要等待CefSharp.BindObjectAsync()绑定后,将c#对象注册为isAsync:true。但我的节点项目中没有引用。我是否需要指出,因为它抛出了相同的错误。请编辑您的问题,以显示您有什么triedI破解了这个问题。我们必须使用ExecuteJavaScriptAsync api从C代码本身执行CefSharp.BindObjectAsync(“boundAsync”),然后访问React应用程序中的公开对象。感谢@amaitland给予您的时间和关注。
public class Client
{
public string Id { get; set; }
public string Name { get; set; }
public string Message()
{
return "ClientABCD";
}
}