hashChange 的事件监听器
eventListener for 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'));
},
我尝试了几种不同的方法让它工作,但它们都只在第一次加载时工作。我做错了什么?
谢谢。
您只是在每种情况下执行 console.log
,并将其 return 值添加为侦听器。您需要传递一个函数作为事件监听器,例如:
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 )
});
我正在尝试在 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'));
},
我尝试了几种不同的方法让它工作,但它们都只在第一次加载时工作。我做错了什么?
谢谢。
您只是在每种情况下执行 console.log
,并将其 return 值添加为侦听器。您需要传递一个函数作为事件监听器,例如:
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 )
});