그래서 나는 구성 요소를 가지고 있고, 나는 상태 변경, 예를 들어, 트리거해야 그것은이 클릭 할 때의 말을하자 : 나는 그것을 "비활성화"무엇을하려는 경우, 지금글로벌 이벤트 및 구성 요소의 로컬 상태
:on-click #(om/set-state! this {:activated? true})
을 문서의 아무 곳이나 클릭하면? 난 그냥은 document
객체에 이런 일을 접선으로 addEventListener
을 사용할 수있는 것 같아요 :
(componentDidMount [this]
(events/listen (gdom/getDocument)
(.-CLICK events/EventType)
#(om/set-state! this {:activated? false}) true))
지금이 내가 원하는 것을, 그러나 나는 것 같은 구성 요소의 200 개 인스턴스가 처음으로 모든 경우 200 이벤트 리스너, 맞죠? 바람직하지는 않지만 괜찮은 것 같아요.
실제 상태는 설정 상태를 구성 할 때 구성 요소의 인스턴스를 다른 인스턴스와 어떻게 구별합니까? 나는 분명히 그것들 모두가 "비활성화"되어지는 것을 원하지 않는다. 단지 클릭 이벤트 처리기가 작동되는 컨텍스트가있는 것만을 사용한다.
N 개의 DOM 노드마다 N 개의 이벤트 리스너를 가질 수 있으며 각 노드에는 고유 한 이벤트 리스너가 있고 전자는 괜찮습니다. 상태의 특정 속성 (아마': activated')을 검사 할 수 있고, 특정 값이 있으면 아무 것도하지 말고, 그렇지 않으면 무언가를하고, 청자도 클릭마다 실행됩니다. (그것도 완벽하게 괜찮습니다.) 정말 중요한 질문에 답하는 것은 도움이되지 않지만, 여전히 유용합니다. –