2017-01-20 1 views
0

ReactJS에서 내 페이지에 대한 이벤트 리스너를 추가하려고합니다. componentDidMount()에 추가했습니다. 그러나 이것은 초기 페이지로드에 대해서만 트리거됩니다.hashChange 이벤트 리스너

검색 주소창에 변경 사항이있을 때마다 어떻게 트리거 할 수 있습니까?

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')); 
    }, 

여러 가지 방법으로 작동 시키려고했지만 첫 번째로드에서만 작동합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

감사합니다.

답변

2

모든 경우에 console.log을 실행하고 반환 값을 수신기로 추가하는 것입니다. 당신은 예를 들어, 이벤트 리스너로 함수를 전달해야

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

https://jsfiddle.net/ku6okrp2/

EDIT 그것이 ES5 사용하여 더 분명 보이게 :

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

아 내가 볼을, 나는하지 않았다 올바르게 이해하십시오. 그럼에도 불구하고 함수 (console.log)가 호출 될 것이라고 생각했지만 이벤트가 필요하다고 생각합니다. 감사. – fractal5

+0

@ fractal5'window.addEventListener ("hashchange", console.log);'https : // jsfiddle '(이)라면, 다른 함수와 마찬가지로'console.log'를 이벤트 리스너로 전달할 수 있습니다. .net/ku6okrp2/1 / – pawel