javascript - chrome js 控制台:我可以将它用作桌面 JS 应用程序中的 ES6 react js 组件吗?
问题描述
有什么方法可以让我自己的 Chrome 控制台实例作为我的桌面应用程序中的反应组件。作为桌面应用程序假设让我的应用程序启动并运行
- 我会用 Chrome
- 我可以编写和安装 Chrome 插件。
- 我可以基于 CEF C# https://github.com/cefsharp/CefSharp/或https://electronjs.org等框架构建自己的浏览器
说明我在应用程序的 JS 脚本端寻找的代码:
class App extends Component {
constructor() {
super();
this.logger_one = null;
this.logger_two = null;
}
render() {
return (<div>
<SomeOtherComponent .../>
<ChromeConsole ref={(r)=>{this.logger_one = r}} />
<hr/>
<ChromeConsole ref={(r)=>{this.logger_two = r}} />
</div>
)
}
event_handler_one() {
logger_one.log("something happen for one...");
}
event_handler_two() {
logger_two.log("something happen for two...");
}
}
this.logger_one
并this.logger_two
假设引用控制台等对象的实例,以便我可以使用此 API:https ://developers.google.com/web/tools/chrome-devtools/console/console-reference
我需要参考 Chrome 控制台实例,而不是定制控制台替换。这很重要,因为我确实需要所有可供 js 开发人员使用的好功能,但目的不同——观察和理解我的系统行为。
解决方案
笔记
该
window.console
对象是无法实例化的本机实现,因为没有可用的构造函数或类。但这很好,因为您的“两个”记录器可以window.console
毫无问题地使用相同的记录器。该结构
<ChromeConsole ref={(r)=>{this.logger_one = r}} />
将存储在this.logger_one
对 DOM JSX 元素的引用中(请参阅 React 文档的参考资料),因此它不是我们可以操作的引用。但这很好,因为我们可以使用任何其他属性。
您可以使用功能组件来定义属性(示例console
)并使用它来返回窗口控制台:
export default const ChromeConsole = ({ id, console }) => {
console(window.console);
return (<div data-logger-id={id} />);
}
然后将其用作:
class App extends Component {
constructor() {
super();
this.logger_one = null;
this.logger_two = null;
}
render() {
return (
<div>
<SomeOtherComponent .../>
<ChromeConsole id="one" console={(r)=>{this.logger_one = r}} />
<button onClick={event_handler_one} />
<hr/>
<ChromeConsole id="two" console={(r)=>{this.logger_two = r}} />
<button onClick={event_handler_two} />
</div>
);
}
event_handler_one = () => {
this.logger_one.log("something happen for one...");
}
event_handler_two = () => {
this.logger_two.log("something happen for two...");
}
}
推荐阅读
- python - 如何通过python从EC2下载文件?
- c++ - 在中心而不是在一个顶点合并颜色顶点?
- typescript - Typescript 未检测到方法正在更改的属性
- c# - 如何将 SameSite cookie 属性设置为显式无 ASP NET Core
- javascript - 如何从场景中删除网格的子集?
- r - 在元素 R 的相同列上折叠列表
- angular7 - Angular httpclient.get 确实返回 undefined
- reactjs - 通过 GatsbyJS/ReactJS 进行 OrientationChange 的全屏视频(什么是最佳实践?)
- python - 列表列表之间的最短路径
- javascript - 使用 gulp-eslint 的问题