hashChange的eventListener

时间:2017-01-20 21:35:27

标签: reactjs addeventlistener hashchange

我正在尝试在ReactJS中为我的页面添加一个事件监听器。我已将它添加到componentDidMount()。但仅在初始页面加载时触发。

如果地址栏发生变化,我怎样才能触发它。

componentDidMount:function(){

        window.addEventListener("hashchange", console.log('hashchange1'));
        $(window).bind("hashchange", console.log('$ - hashchange'));
        window.onhashchange =  console.log('hashchange3');      
        ReactDOM.findDOMNode(this).addEventListener('hashChange',console.log('ReactDOM - hashchange'));
    },

我已经尝试了几种不同的方式让它工作,但它们都只能在第一次加载时工作。我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:3)

您只是在每种情况下执行console.log,并将其返回值添加为侦听器。您需要将函数作为事件侦听器传递,例如:

window.addEventListener("hashchange", e => console.log('hashchange1', window.location.hash ));

https://jsfiddle.net/ku6okrp2/

编辑使用ES5让它看起来更明显:

window.addEventListener("hashchange", function(e){ 
  console.log('hashchange1', window.location.hash )
});