Я внедряю компонент React в веб-страницу как скрипт, но это на странице, которая открывается с помощью фонового скрипта.
Я пытаюсь подождать, пока страница загрузитсяи компонент React монтируется, затем отправьте сообщение этому компоненту.К сожалению, я не могу заставить это работать, поэтому я подозреваю, что это потому, что Chrome говорит, что страница загружена, но компонент React еще не смонтирован.
В моем фоновом скрипте у меня есть следующее:
function relist(request) {
const url = 'domain.com';
chrome.tabs.create({ url },() => {
chrome.tabs.onUpdated.addListener(reListener);
});
// Listen for new relist tab and remove listener when loaded
function reListener(tabId, info, tab) {
if(tab.url === url && tab.status === "complete") {
console.log("Found tab");
chrome.tabs.sendMessage(tab.id, {action: "relist", data: request.data});
chrome.tabs.onUpdated.removeListener(reListener);
}
}
}
Затем в компоненте, который я ввожу, у меня есть следующее:
componentDidMount() {
console.log("Mounted Design Upload");
chrome.runtime.onMessage.addListener(
(request) => {
console.log("Received Message");
if(request.action === "relist") {
console.log("relist", request);
this.props.dispatch(currentDesign({
id: request.data.design_slug,
meta:request.data.meta,
}));
this.setState({
value: {
key: request.data.design_slug,
name: request.data.design.title
},
selectedFile: request.data.file_slug
})
}
});
}
Кто-нибудь знает, как я могу сказать фоновому сценарию ждать сообщения от компонента перед отправкой данных через