2018년 11월 13일

오늘 한 일:

todolist

리팩토링

custom Input의 validation

내가 만든 BaseFormInput의 템플릿은 다음과 같은 형태

<div>
    <lable></lable>
    <input>
    <div class="message">형식이 올바르지 않습니다</div>
</div>

BaseForm은 다음과 같음

<div>
    <BaseFormInput v-model="..."/>
    <BaseFormInput v-model="..."/>
    <button class="submit"/>
</div>

BaseFormInput에 있는 message를 띄우려면 BaseFormInput에서 validation을 해야한다고 생각했지만 완전 잘못된 생각이었다. 생각해보면 중복이 발생함을 알 수 있다.

결국 부모(BaseForm)에서 validation을 맡고 해당 결과를 BaseFormInput의 props를 이용해 전달해 주기로 결정하니..

  1. validation의 중복 제거

  2. submit할 시에 ref를 이용할 필요 없이 BaseForm에서 validation을 그냥 사용하면 됨

아주 깔끔하게 해결!

<BaseFormInput
  v-model="..."
  :validity="..."
/>

testcode

attribute와 property의 차이

attribute는 HTML에서 property는 DOM에서 정의 된다

vue에서 v-bind를 이용한 v-bind:value="sth" 세팅은 property 세팅으로 동작하므로 vue test util에서 wrapper.attributes()로 검출할 수 없다. 따라서 wrapper.element.value방식으로 접근!