ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Refactoring] Editable Text를 수정해보자
    Javascript/vue 2025. 2. 21. 13:59

     

     

     


    기존에 구현했던 Editable Text 컴포넌트를 수정해보았다..!

    회고: 내가 왜이렇게 어렵게 했찌..? (어리둥절)



     

     

    결과물

     

     

     

     

    뭔가.. 옛날의 나는 입력받은 TextInput Box Text의 스타일도 다르고, 지금은 기억 안나는 또 다른 이유(가 있겟지..?)에 의해 아래의 코드를 작성했던 것 같다.

    <template>
        <div>
            <span v-show="!onEdit" @click="onClickText">{{ defaultText }}</span>
                <VaInput
                    v-show="onEdit"
                    ref="refInput"
                    :model-value="editText"
                    :maxlength="maxLength"
                    class="edit-input-box"
                    @input="onInputText"
                    @blur="onSaveText"
                    @keyup.enter="onSaveText"
                ></VaInput>
        </div>
    </template>
    
    <script setup lang="ts">
    
    interface Props {
    	defaultText?: string,
    }
    
    const { defaultText = '편집' } = defineProps<Props>();
    
    const onEdit = ref<boolean>(false);
    
    const onClickText = () => {
    	onEdit.value = true;
    }
    
    </script>

     

    검토해 보자면...

    • Props로 defaultText가 들어온다면, 기본 텍스트를 보여준다.
    • 기본 텍스트 클릭 시, onClickText이벤트를 사용해서 onEdit의 값을 바꿔주고,
      onEdit이 true면 <VaInput></VaInput> 컴포넌트를 보여준다. ( 기본 텍스트는 숨김 )
    • VaInput 컴포넌트의 이벤트 핸들링을 사용해서
      - input: 수정 텍스트 저장
      - blur: 텍스트 수정 완료
      - keyup.enter: 텍스트 수정 완료
      액션을 취한다.

    머.. 이런 식으로 작성을 했었는데...

    이렇게도 충분히 가능하지만 좀 더 콤팩트하게 수정을 했다..!

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    'Javascript > vue' 카테고리의 다른 글

    [Textarea] 깨끗한 채팅 Textarea 만들기  (0) 2025.03.26
    Composition API  (0) 2024.03.12
    단일 파일 컴포넌트의 활용  (0) 2024.03.12
    Vue 인스턴스  (0) 2024.03.06
    VUE3 + Typescript 시작하기  (0) 2023.07.11
Designed by Tistory.