如何使 QWebengineView 调用 React 的方法

直接使用 golang 版 Qt 中的 QWebengineView 的 RunJavaScript4 方法不能直接调用到 React 方法

按照以下步骤可以解决问题。

  1. 在 js 文件里, 需要把 React 的类实例暴露给 window ,代码如下:
  import xxx;
  //...
  window.updateValue = function(url) {
  	alert("call ok !");
    // if(window.callback != undefined) {
    //    window.callback.updateValue(url);
    // }
  };
  window.setCallback = function(callback) {
    window.callback = callback;
  }
  //...
  export default class MyFeedback extends React.Component {
   //...
   // key step
   //  in react life cycle `componentWillMount` set `this` :
   componentWillMount() {
         window.setCallback(this);
   }
  //...
  }
  1. 在 go 文件里, 我们可以这样调用方法 :
	ap.WebView.Page().RunJavaScript4("window.updateValue('hello')")

编译运行项目 ,就可以看到输出 call ok!

参考链接 : https://blog.csdn.net/ZHOUYONGXYZ/article/details/82760929


相关