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
값도 변경
🔥 어떤 상황에서 사용될까?
- v-model의 값이 변경될 때 내부 상태도 변경해야 하는 경우
- v-model이 부모 컴포넌트에서 변경되면, editable을 업데이트하여 동기화.
- 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) 바킹독 알고리즘 강의 읽는 중