개발자
캠페인 데이터 안에 매체 데이터들이 있는데요. 매체 데이터의 이름으로 테이블을 만들고 테이블의 행을 클릭하면, 해당 행에 연관된 데이터를 보여주고, 수정이 가능한 폼?을 만들고있는데요. 캠페인 폼을 서브밋할 경우 매체에서 변경된 값은 정상적으로 콘솔에 찍히는데 테이블의 다른 매체를 선택해도 생성일이 변경되지 않는 문제가 있는데요.. 어떤게 문제인지 잘 모르겠습니다.. 첨부한 스크린샷에서 처럼 예를 들어.. 매체명11 - 생성일 5월1일 매체명22 - 생성일 5월2일 매체명33 - 생성일 5월3일... 이런식으로 데이터가 있다고하면 매체를 선택할때마다 생성일도 같이 변해야 되는데 변경이 안됩니다..ㅠ 폼 하나로 캠페인 및 캠페인 안에 있는 매체들의 데이터를 한번에 서브밋 하고싶어서 저런식으로 구성을했어요.. 뭐가 문제인지 도무지 모르겠어요.. 도와주세요!..
답변 3
익명
작성자
2024년 04월 26일
값은 실제로 서브밋할때 변경이 되지만, 화면상에서 다른 매체를 선택한 생성일로 표시가 안되는 문제입니다.ㅠ
익명
작성자
2024년 04월 26일
useEffect(() => { if (selectedMedia && selectedMedia.billDate) { setValue(`medias.${selectedIndex}.billDate`, selectedMedia.billDate); } }, [selectedIndex, selectedMedia, setValue]); 이런식으로 선언을 하니깐, billDate는 변경이 되는데, 값이 10개 20개인 경우 일일히 하나씩 선언을 해줘야 하나요?... ㅠㅠ
익명
작성자
2024년 04월 26일
아래 처럼 코드를 추가하니깐 테이블에서 매체를 선택할때마다 선택한 매체의 해당하는 값으로 변경이되고, 변경된 값도 적용이 잘 되는데, 초보자라 이게 맞는건지를 모르겠네요.. 도움 주실분 안계실까요?...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
type CampaignMediaKeys = keyof CampaignMedia; type IndexedMediaKeys = `medias.${number}.${CampaignMediaKeys}`; useEffect(() => { if (selectedMedia) { Object.entries(selectedMedia).forEach(([key, value]) => { const fieldPath: IndexedMediaKeys = `medias.${selectedIndex}.${key}` as IndexedMediaKeys; setValue(fieldPath, value); }); } }, [selectedMedia, selectedIndex, setValue]); 이런 코드를 추가하고, <Controller name={`medias.${selectedIndex}.billDate`} control={control} render={({ field: { onChange, value } }) => ( <DesktopDatePicker format="yyyy-MM-dd" value={value ? new Date(value) : null} onChange={(newValue) => { const formattedDate = newValue ? format(newValue, 'yyyy-MM-dd') : null; onChange(formattedDate || null); // 새로운 값이 있으면 그 값을, 없으면 null을 설정 update(selectedIndex, { ...fields[selectedIndex], billDate:formattedDate!}); }} slotProps={ { textField: { label: '계산서 발행일', fullWidth: true, id: 'media-billDate' }, actionBar: { actions: ['clear'] } } } /> )} />
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!