0

Я делаю расширение Chrome, которое вставляет на страницу 2 разных варианта React. Я бы хотел, чтобы каждый из них синхронизировался, отправив 2-ое событие с соответствующими данными, когда в первом было выбрано что-то еще.Обмен событиями между компонентами React

Есть ли практика, когда дело доходит до отправки событий другим компонентам?

Я попытался это из первого:

evt = new CustomEvent("selectedEmailChange", { 
    detail: { 
    email: data.email 
    } 
}); 
window.dispatchEvent(evt); 

, а затем в второй:

componentDidMount: function() { 
    this.listenForEmailChange(); 
    }, 
    componentWillUnmount: function() { 
    window.removeEventListener("selectedEmailChange", this.handleEmailChange, false); 
    }, 
    listenForEmailChange: function() { 
    window.addEventListener("selectedEmailChange", this.handleEmailChange, false); 
    }, 
    handleEmailchange: function() { 
    debugger 
    console.log("i heard you dog!"); 
    }, 

Но ничего не поймали во 2-й.

+0

Похоже, что подписка на события в компонентеDidMount - лучшая практика ... http://facebook.github.io/react/tips/communicate-between-components.html – pherris

+0

попробуйте window.postMessage вместо этого - я предполагаю, что расширение, которое вы не можете опубликовать подобное сообщение. http://stackoverflow.com/questions/9602022/chrome-extension-retrieving-gmails-original-message/9636008#9636008 – pherris

+0

@pherris Я использую его для связи с главной страницей в других местах, и это определенно работает. – brandonhilkert

ответ

Смежные вопросы