You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
환경
DM Note v1.5.2
Windows 11
재현에 사용한 최소 플러그인: (아래 코드 첨부)
재현 방법
설정 → 개발자 모드 → JS 플러그인 활성화
아래 최소 플러그인 코드를 .js 파일로 저장 후 불러오기
이 플러그인은 키 입력을 전혀 감지하지 않고, 1초마다 setState({count})만 호출함
이 상태에서 아무 키나 꾹 누르고 있으면, 메인 키뷰어의 해당 키가 active 상태를 유지하지 못하고 1초 간격으로 깜빡이며 inactive로 리셋됨
기대 동작
이 플러그인은 키 입력을 구독하지도 않고, 화면에 숫자 하나만 표시하는 완전히 무관한 패널입니다. 이 패널의 상태 갱신이 메인 키뷰어의 렌더링에 영향을 주면 안 됩니다.
실제 동작
이 플러그인이 setState를 호출할 때마다(1초마다), 커스텀 플러그인의 내용과 무관하게 메인 키뷰어 전체의 active/inactive 표시가 순간적으로 리셋됩니다. 키를 계속 누르고 있어도 눌림 상태가 유지되지 않고 깜빡입니다.
추정 원인 (DevTools로 확인)
renderFromTemplate()가 플러그인 상태를 ReactDOMServer.renderToStaticMarkup()으로 정적 HTML 문자열로 변환한 뒤 updateElement(this.id, {html})를 호출하는데, 이 updateElement가 모든 플러그인 엘리먼트를 담고 있는 하나의 전역 store(코드상 elements 배열, getState().elements / setElements() 패턴)를 갱신하는 것으로 보입니다. 이 store를 구독하는 컴포넌트가 세밀한 selector 없이 배열 전체를 구독하고 있다면, 무관한 플러그인 하나의 상태 변경만으로도 다른 컴포넌트(메인 키뷰어 포함)까지 리렌더링될 수 있습니다.
참고
내장(빌트인) 패널은 이 문제가 없고, JS 플러그인 로더로 불러온 커스텀 플러그인에서만 재현됩니다. DM.NOTE.v.1.6.1.zip의 assets 파일에 들어있는 kps.js 플러그인으로도 동일하게 재현됩니다.
환경
DM Note v1.5.2
Windows 11
재현에 사용한 최소 플러그인: (아래 코드 첨부)
재현 방법
설정 → 개발자 모드 → JS 플러그인 활성화
아래 최소 플러그인 코드를 .js 파일로 저장 후 불러오기
이 플러그인은 키 입력을 전혀 감지하지 않고, 1초마다 setState({count})만 호출함
이 상태에서 아무 키나 꾹 누르고 있으면, 메인 키뷰어의 해당 키가 active 상태를 유지하지 못하고 1초 간격으로 깜빡이며 inactive로 리셋됨
최소 재현 플러그인
2026-08-05.16-28-58.mp4
기대 동작
이 플러그인은 키 입력을 구독하지도 않고, 화면에 숫자 하나만 표시하는 완전히 무관한 패널입니다. 이 패널의 상태 갱신이 메인 키뷰어의 렌더링에 영향을 주면 안 됩니다.
실제 동작
이 플러그인이 setState를 호출할 때마다(1초마다), 커스텀 플러그인의 내용과 무관하게 메인 키뷰어 전체의 active/inactive 표시가 순간적으로 리셋됩니다. 키를 계속 누르고 있어도 눌림 상태가 유지되지 않고 깜빡입니다.
추정 원인 (DevTools로 확인)
renderFromTemplate()가 플러그인 상태를 ReactDOMServer.renderToStaticMarkup()으로 정적 HTML 문자열로 변환한 뒤 updateElement(this.id, {html})를 호출하는데, 이 updateElement가 모든 플러그인 엘리먼트를 담고 있는 하나의 전역 store(코드상 elements 배열, getState().elements / setElements() 패턴)를 갱신하는 것으로 보입니다. 이 store를 구독하는 컴포넌트가 세밀한 selector 없이 배열 전체를 구독하고 있다면, 무관한 플러그인 하나의 상태 변경만으로도 다른 컴포넌트(메인 키뷰어 포함)까지 리렌더링될 수 있습니다.
참고
내장(빌트인) 패널은 이 문제가 없고, JS 플러그인 로더로 불러온 커스텀 플러그인에서만 재현됩니다. DM.NOTE.v.1.6.1.zip의 assets 파일에 들어있는 kps.js 플러그인으로도 동일하게 재현됩니다.