0

Я использую React.js для создания компонентов в хром-контенте.получить компилятор jsx для игнорирования строк, относящихся к другим API-интерфейсам

Реактивные компоненты должны повторно отображаться при изменении данных в локальном хранилище.

readUserInfo : function() { 
    chrome.storage.onChanged.addListener(function(object changes, string areaName) { 
    this.setState({userInfo:changes["userInfo"].newValue}); 
}); 

с функцией монтирования

componentDidMount: function() { 
    this.readUserInfo(); 
} 

конечно JSX компилятор жалуется на звонки хром API. Как я могу заставить компилятор jsx игнорировать эту строку, т. Е. Оставить ее как vanilla js?

+2

Компилятор jsx будет жаловаться на это, потому что 'function (object changes, string areaName) {' недопустим JavaScript. В js нет типов. Также не забудьте '.bind (this)' ваш обратный вызов. – FakeRainBrigand

ответ

0

Попробуйте вместо этого:

componentDidMount: function() { 
    chrome.storage.onChanged.addListener(this.onChromeStorageChange) 
}, 
onChromeStorageChange: function(changes, areaName) { 
    this.setState({ userInfo:changes["userInfo"].newValue }) 
} 

я РЕАКТ и автоматического связывание удалил некорректное выражение аргумента вы имели (вероятно, копировать/вставить из документации). Не забудьте удалить прослушиватель, когда компонент размонтируется.