将Chrome API与React.js结合使用

Aus*_*lfe 1 javascript google-chrome-extension google-chrome-devtools reactjs

我一直在尝试使用React创建一个简单的Chrome扩展程序。清单看起来像这样:

{
  "name": "New Tab",
  "version": "1.0",
  "manifest_version": 2,
  "description": "A minimalist replacement for Chrome's New Tab page.",
  "chrome_url_overrides": {
    "newtab": "index.html"
  },
  "permissions": ["tabs", "topSites"]
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何在React中实际使用Chrome topSites API。我一直在查看文档https://developer.chrome.com/extensions/topSites,但它提供的见解并不多。我试图做这样的事情来获取数据数组。

chrome.topSites.get(console.log)
Run Code Online (Sandbox Code Playgroud)

然而,

'chrome' is not defined  no-undef
Run Code Online (Sandbox Code Playgroud)

小智 7

您可以通过/*global chrome*/在文件顶部添加来定义chrome 。

例如

    /*global chrome*/
import React, { Component } from 'react';
import './App.css';

    class App extends Component {
        componentWillMount() {
            chrome.storage.local.set({ 'data' : 'Your data'}, function(result) {
                console.log(" Data saved ")
            });
        }

        render() {
            return (
              <div className="App">
              </div>
            );
        }
    }

    export default App;
Run Code Online (Sandbox Code Playgroud)


Ivo*_*vor 1

您需要禁用 ESLint 规则no-undef,然后再次启用它:

/* eslint-disable no-undef */
function callback(val) {
    console.log(val)
}

chrome.topSites.get(callback);
/* eslint-enable no-undef */
Run Code Online (Sandbox Code Playgroud)