// 오류 났던 코드 - checked의 초기 값을 상태에 따른 ture or false가 아닌 null로 설정했기 때문
return (
<div>
<label label htmlFor="all">
<input
type="checkbox"
id="all"
onChange={handleCheckedAll}
checked={checkedList.length === valueList.length ? true : null}
/>
all
</label>
{dataList.map(({ id, value }) => (
<label key={id} htmlFor={value}>
<input
key={id}
id={value}
type="checkbox"
value={value}
onChange={handelCheckedElement}
checked={ // check된 값들 중 해당 요소의 값이 포함된지만 확인하면 되는 지 몰랐다
checkedList.length === valueList.length
? false
: checkedList[0] === value
? true
: null
}
/>
{value}
</label>
))}
</div>
// 최종 수정 코드
return (
<div>
<label htmlFor="all">
<input
type="checkbox"
id="all"
onChange={handleCheckedAll}
checked={checkedList.length === valueList.length}
/>
all
</label>
{valueList.map(({ id, value }) => (
<label key={id} htmlFor={value}>
<input
key={id}
id={value}
type="checkbox"
value={value}
onChange={handelCheckedElement}
checked={
checkedList.length === valueList.length
? false // 전체 항목이 체크 되어있을 땐 나머지의 체크를 풀어주었다
: checkedList.includes(value)
}
/>
{value}
</label>
))}
</div>
);
const SeriesForm = ({ edit, param, seriesData, ...props }) => {
const history = useHistory();
const [dayValues, setDayValues] = useState(seriesData.uploadDate || []);
const { values, handleChange, handleSubmit, handleImageUpload } = useForm({
initialValues: {
thumbnailFile: seriesData.thumbnailFile || '',
category: seriesData.category || '',
title: seriesData.title || '',
introduceText: seriesData.introduceText || '',
introduceSentence: seriesData.introduceSentence || '',
subscribeStartDate: seriesData.subscribeStartDate || '',
subscribeEndDate: seriesData.subscribeEndDate || '',
seriesStartDate: seriesData.seriesStartDate || '',
seriesEndDate: seriesData.seriesEndDate || '',
uploadTime: seriesData.uploadTime || '',
articleCount: seriesData.articleCount || '',
price: seriesData.price || '',
thumbnailUrl: seriesData.thumbnailUrl || '',
},
2차원 배열 구조를 가지고 dp알고리즘을 이용하는 문제를 풀었다. 아이디어는 떠올려냈는데
코드로 구현하지 못했다.. 2차원 배열의 for문을 돌 때 arr[i][j]에서 i또는 j값이 마이너스 일 때의 예외처리를 해야하는데 자꾸 실패했다 ㅜㅜ 꽤 오랜 시간을 썼는데도 해결하지 못해서
내일 다시 차근히 풀어보려한다..