Значение не передается через React Context API

https://developer.chrome.com/extensions/tabs#method-getSelected показывает

getSelected

chrome.tabs. getSelected (integer windowId, обратный вызов функции) Устаревший с Chrome 33. Используйте tabs.query {active: true}. Получает вкладку, выбранную в указанном окне.

Возможно, вы должны использовать chrome.tabs.query в popup.js , например

chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
    console.log(tabs[0].url);
});

, перезагрузить расширение и проверить результат в элементе проверки вашего расширения.

результат изображения

код изображения

https://developer.chrome. com / extensions / tabs # type-Tab показывает, что отображается URL-адрес, отображаемый вкладкой. Это свойство присутствует только в том случае, если манифест расширения содержит разрешения «tabs». (Только для того, чтобы напомнить, что кто-то забыл. Я забыл об этом, когда я просто проверил его.)

1
задан Ivan Burzakovskiy 24 February 2019 в 19:12
поделиться

1 ответ

Вам также необходимо использовать компонент Provider где-то выше компонента MyContext.Consumer.

Пример

const initialState = {
  ve: "randomValue"
};
const MyContext = React.createContext();

class MyProvider extends React.Component {
  constructor(props) {
    super(props);
    this.state = initialState;
  }

  render() {
    return (
      <MyContext.Provider
        value={{
          state: this.state
        }}
      >
        {this.props.children}
      </MyContext.Provider>
    );
  }
}

class App extends React.Component {
  render() {
    return (
      <MyProvider>
        <MyContext.Consumer>
          {context => <div>{JSON.stringify(context)}</div>}
        </MyContext.Consumer>
      </MyProvider>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id="root"></div>

0
ответ дан Tholle 24 February 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: