ClojureScript를 다루고 싶지만 몇 가지 점에 대해 의아해합니다. 내 문제는 기능적으로 작업하려고 할 때 사용자 상호 작용으로 인한 상태 변경을 처리하는 좋은 방법입니다.
몇 가지 예를 들어 보겠습니다. 브라우저에서 실행되는 응용 프로그램을 염두에두고 있지만 문제가 더 일반적이라고 생각합니다. 물론 적어도 DOM이 바뀌고 있습니다. 그러나 변경 할 수없는 데이터 구조로 작업하기 위해 나머지 코드를 구성하는 방법을 찾고 싶습니다.
1) 일부 이벤트를 일부 DOM 객체에 첨부하고 싶다고 가정 해보십시오. 대부분의 기능적인 방식으로 수행하기는 어렵지 않습니다. 노드를 만들 때 다양한 이벤트 처리기를 사용하여 해시 맵을 연결합니다. 그러나 이벤트 위임을 사용하는 경우를 고려하십시오. 그런 다음 새 노드를 작성할 때 이미 존재하는 일부 상위 노드에 이벤트 핸들러를 첨부 할 수 있습니다. 따라서 기존 노드와 관련된 해시를 변경해야합니다.
2) 입력 필드에 자동 완성 모듈을 설계한다고 가정 해보십시오. 사용자가 키를 누를 때마다 서버에 전화를 걸어 제안을 얻을 수 있습니다. 이것은 쉬워요. 그러나 이제 조금 최적화하고 싶다고 가정 해보십시오. 일치하는 모든 결과를 알고 있으면 일치하는 모든 결과를 foo
다시 요청할 필요가 없습니다 foobar
. 나는 전자를 필터링 할 수 있습니다. 그래서 일종의 캐시를 만들어야합니다. 이 캐시는 사용자가 이전에 입력 한 단어의 수퍼 세트가 아닌 새 단어를 삽입 할 때마다 업데이트됩니다. 다시 : 캐시를 어떻게 모델링합니까? 가장 합리적인 방법은 단어를 결과에 매핑하는 해시 맵인 것처럼 보이지만 변경할 수 있어야합니다.
사용자 상호 작용으로 인한 변경 사항을 기능적 디자인에 쉽게 통합 할 수있는 패턴을 제안 할 수 있습니까?