[TIL] 20250324월 (vue.js 부모 ← 자식 데이터 바인딩, input field :size)

2025. 3. 24. 20:47·Developer/TIL
반응형

2025-03-24


1) 서비스 점검 모달 구현 테스트 (web)
- 기존 admin > ㅇㅇ 탭 확인
- PK값 변경하고, 점검 시간 안에 모달 잘 뜨는지 테스트

 


2) 카테고리 모달 - 카테고리 수정 API 연결
- 1. 수정하고자 하는 cell 더블 클릭 시, 해당 div가 input 필드로 변경되어 수정가능하도록 구현
기능 구현은 vue의 `@dbclick`을 사용함
 
- 2. 커스텀 post 요청 함수 가져다 쓰기

export async function admPost(url, params, headers = {}) {
  return await axios.post(url, params, {headers});
}

위와 같이 정의한 함수를 외부에서 가져다 쓸 때,
API 응답을 받아 후속처리를 해야 한다면 가져다 쓴 곳에서도 `await` 추가

await admPost(...);

 에러처리 위해 `try - catch`도 써주는 게 좋음

 
- 3. 구현한 내용 컴포넌트화
아직 vue의 `modelValue` 사용이 익숙하지 않아서, 부모 자식 간 데이터 주고 받는 방법을 다시 한번 공부하면서 익혀봐야겠다.
 

vue에서 데이터를 주고 받는 방식 (양방향)
✅ 부모  ➡️ 자식 (props): 부모 값이 바뀌면, 자식도 자동 업데이트됨.
✅ 자식 ➡️ 부모 (emit)

  • 자식 컴포넌트 내부에서 값이 바뀌면, `emit`을 통해 부모에게 알림
  • 부모는 `v-model`을 통해 자식으로부터 데이터를 받아서 값을 업데이트
  • `v-model = "data. ko"` ➡️ 이와 같은 방식으로 data.ko 값을 자식에게 전달

조금 더 배워보기

watch(
  () => props.modelValue,
  (newValue) => {
    editValue.value = newValue;
  },
);
  • Vue의 watch 함수를 사용하여 `props.modelValue`의 변화를 감지하고, `editable.value`를 `newValue`로 업데이트하는 코드
  • 부모에서 내려준 `modelValue` 변경 시, `editable` 값도 변경

🔥 어떤 상황에서 사용될까?

  1. v-model의 값이 변경될 때 내부 상태도 변경해야 하는 경우
    • v-model이 부모 컴포넌트에서 변경되면, editable을 업데이트하여 동기화.
  2. props로 전달된 데이터를 로컬 상태로 유지하면서 변경 사항을 반영해야 할 때
    • 부모 컴포넌트에서 modelValue를 변경하면, editable이 자동으로 변경됨.
const emit = defineEmits(["update:modelValue"]);

...

emit("update: modelValue", editable.value);

 👍 부모에게 데이터 전달하는 코드

부모에서 자식에게 props를 넘겨줄 때는

<EditableCell v-model="data.ko" />

 이런 식으로 전달해 주고, 자식은

const props = defineProps({
  modelValue: String
});

 이렇게  props로 부모의 `modelValue`를 받아온다.
 
최종적으로 컴포넌트를 분리한 뒤, 현재 수정 중인지(더블클릭한 경우)를 체크하는 flag를 새로 만들어서, 그걸 이용해 입력 필드 노출여부까지 구현 완료.
➡️ 실제 API랑 연결해서 데이터 전송했을 때, 필드 데이터 전체 삭제되는 대참사😲 일어나서 일단 요청은 막아놓은 상태이다.
오른쪽 split 화면의 경우, API 요청이 2개가 가는데 구조가 어떻게  생긴 건지 모르겠다. 내일 선임분께 여쭤볼 예정.

 
3) 카테고리 모달 - input field 내부 데이터 길이에 따라 width 조절하기
➡️ 더블클릭해서 input으로 변경 시마다 테이블 너비 왔다갔다 함 -> 이건 내일 다시 수정해보기... 전반적인 html 구조를 바꿔야 할 것 같다. 
➡️  input 클릭시 내부 텍스트 데이터 잘리는 문제

<input :size-"editValue.length + 10 || 1" />

위와 같이 `size` prop을 사용해서 해결할 수 있었다. 다만 길이가 너무 긴 경우 아직도 잘리는 문제가 남아있어서, 완충용으로 10을 추가해줬다. `editValue.length` 값은 입력 데이터 글자 수이다.

 

4 ) 프로그래머스 lv1 두개 뽑아서 더하기 문제 품

function solution(numbers) {
    let sets = new Set();
    var answer = [];
    for(let i = 0; i < numbers.length; i++){
        for(let j = 0; j < numbers.length; j++){
            if (i === j) continue;
            sets.add(numbers[i] + numbers[j])
        }
    }
    return Array.from(sets).sort((a, b)=> a-b);
}

https://school.programmers.co.kr/learn/courses/30/lessons/68644

 

 

5) 바킹독 알고리즘 강의 읽는 중

https://blog.encrypted.gg/922 

반응형

'Developer > TIL' 카테고리의 다른 글

TIL : 250401화 (:active, 즐겨찾기 기능 css 변경 진행중-event.target, menuRefs, white-space, 프로그래머스 문자열 내림차순으로 배치하기)  (0) 2025.04.01
TIL : 250331월 (프로그래머스 해시, 윤년, 같은 숫자는 싫어, 문자열 내 마음대로 정렬하기(sort()함수에 대해 알아보기))  (1) 2025.03.31
TIL : 250328금 (메뉴 검색창 만들기, 즐겨찾기 기능 구현, 프로그래머스 유연근무제)  (0) 2025.03.29
[TIL] 250327목 (isNaN, Number.isNaN / split, splice, slice / reduce / map vs reduce)  (1) 2025.03.27
[TIL] 250326수 (자바스크립트 BFS, BFS가 필요한 문제 패턴, PGM 음양마스터, selectbox 데이터 null값 뜨는 문제 수정)  (1) 2025.03.26
[TIL] 20250325화 (자바스크립트의 배열, 연결리스트, 완전탐색(모의고사), reduce와 filter의 시간복잡도 계산)  (1) 2025.03.25
'Developer/TIL' 카테고리의 다른 글
  • TIL : 250328금 (메뉴 검색창 만들기, 즐겨찾기 기능 구현, 프로그래머스 유연근무제)
  • [TIL] 250327목 (isNaN, Number.isNaN / split, splice, slice / reduce / map vs reduce)
  • [TIL] 250326수 (자바스크립트 BFS, BFS가 필요한 문제 패턴, PGM 음양마스터, selectbox 데이터 null값 뜨는 문제 수정)
  • [TIL] 20250325화 (자바스크립트의 배열, 연결리스트, 완전탐색(모의고사), reduce와 filter의 시간복잡도 계산)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기 (506)
      • 프로그래밍 (41)
        • Programming (1)
        • C | C++ (6)
        • Java (28)
        • Python (5)
      • 웹 프로그래밍 (2)
        • HTML | CSS (5)
        • JavaScript | TypeScript (41)
        • React (25)
        • Vue.js (0)
        • Next.js (18)
        • Spring & Spring Boot (13)
        • JSP & Servlet (1)
        • DB (4)
      • 웹 프로젝트 (77)
        • 웹 프로젝트 (22)
        • 🥨스낵몰 (3)
        • 👨‍👨‍👧‍👧소셜 가계부 (26)
        • 🌜꿈 일기장 (11)
        • 🔮포트폴리오 사이트 (11)
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램 (0)
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼 (0)
        • 😺Just Meow It: 조언 사이트 (2)
        • 📕Workly: 교대근무 다이어리 (1)
      • 앱 프로그래밍 (26)
        • Flutter (24)
        • Kotlin (2)
      • Problem Solving (166)
        • 백준 (52)
        • 프로그래머스 (79)
        • SWEA (29)
      • Computer Science (40)
        • 알고리즘 (14)
        • 컴퓨터 네트워크 (18)
        • 이산수학 (8)
      • Developer (47)
        • 후기 (4)
        • 자료정리 (4)
        • 취업 | 취준 (9)
        • SSAFY (1)
        • 웹개발 교육 프로그램 (9)
        • TIL (20)
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    spring boot
    리액트
    AWS
    구현
    ZeroCho
    Jiraynor Programming
    블로그 제작
    Til
    프로젝트
    자바스크립트
    공식문서
    mysql
    뉴렉처
    파이썬
    bfs
    웹사이트
    컴퓨터네트워크
    백준
    플러터
    포트폴리오
    Next.js
    자바
    알고리즘
    React
    클론 프로젝트
    프로그래머스
    SWEA
    강의내용정리
    타입스크립트
    d3
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[TIL] 20250324월 (vue.js 부모 ← 자식 데이터 바인딩, input field :size)
상단으로

티스토리툴바