Stimulus 컨트롤러는 static values
속성을 활용하여 theme
(문자열), lineNumbersEnabled
(불리언), fontSize
(숫자)와 같은 설정 값들의 타입과 기본값을 명확히 정의합니다. 핵심적인 기법은 HTML 요소에 data-action="editor#updateSetting"
과 data-editor-key-param="[설정 키]"
속성을 부여함으로써, 모든 설정 변경 이벤트를 단일 updateSetting
메서드로 라우팅하는 것입니다. 이 updateSetting
메서드는 Stimulus의 액션 파라미터 객체에서 key
(설정 이름)와 currentTarget
(이벤트를 발생시킨 HTML 요소)를 구조 분해 할당하여 사용합니다. 이를 통해 this[
${key}Value]
와 같은 동적 속성 접근 방식으로 해당 설정 값을 업데이트할 수 있습니다. 예를 들어, data-editor-key-param="theme"
이 전달되면 themeValue
가 업데이트됩니다.
초기 구현 단계에서 체크박스(input type="checkbox"
)와 같은 특정 입력 유형의 값이 Stimulus values API
에 의해 올바르게 해석되지 않는 문제가 발생할 수 있습니다. 이는 체크박스의 기본 value
속성이 ‘on’으로 설정되어 있어 항상 true
로 해석되기 때문입니다. 이 문제를 해결하기 위해, valueFrom
이라는 새로운 헬퍼 메서드가 도입됩니다. 이 헬퍼 메서드는 app/javascript/controllers/helpers.js
파일에 정의되며, checkbox
, number
, text
등 다양한 HTML 입력 타입에 따라 값을 적절하게 변환하는 로직을 포함합니다. 예를 들어, 체크박스는 target.checked
값을 반환하여 불리언으로 변환하고, 숫자는 Number(target.value)
를 통해 숫자 타입으로 변환합니다. text
타입의 경우, 값이 숫자로 보이는 경우 숫자로 변환하고 그렇지 않으면 원본 문자열을 반환합니다. 이 valueFrom
헬퍼를 updateSetting
메서드 내에서 활용함으로써, 입력 값의 타입 강제 변환(coercion)이 정확하게 이루어지도록 합니다.
본문은 설정 변경 후의 영구적인 저장 방식(예: Rails 백엔드에 PUT 요청 전송)은 개발자의 선택에 맡기지만, 필요한 모든 기술적 기반이 마련되었음을 강조합니다. 또한, 다양한 value
콜백 메서드(themeValueChanged
, lineNumbersEnabledValueChanged
등) 내의 중복 로직을 update()
와 같은 단일 메서드로 추출하여 재사용성을 더욱 높일 수 있는 프로 팁을 제공합니다. 이러한 접근 방식은 ‘설정 로직’을 HTML로 이동시켜 Stimulus 컨트롤러를 작고 재사용 가능하며 유지보수하기 쉬운 형태로 만듭니다.