목적

들어가야 할 내용

형식

작성 예시

$bg : #F4F4F5;
$lg : #e6e6eb;
$dg : #606060;

$normal : #333;
$dark : #000;
$dim : #b4b4b4;
$dimmer : #8c8c8c;
$hl : #d9af0e;

/*
- style.scss는 variable, nesting, mixin 등의 코딩 편의와 확장성을 위해 sass로 작성했습니다. 
- 이 파일은 gulp로 컴파일 됩니다. 
- 주요 키컬러와 텍스트 컬러를 변수화하여 추후 변경사항이 있을 때 유연하게 대처하고 싶었습니다.
- (리팩토링) 회색조 컬러 배색이 상대적으로 단조롭과 변수명 관리가 어려워 넘버링이 필요할 것 같습니다.
- (리팩토링) 컬러 변수명에 대한 보다 자세한 설명이 있었으면 좋겠습니다.
*/
function Category({ match }: RouteComponentProps<MatchParams>) {
	
	const defaultLimit:number = 5;
	const [offset, setOffset] = useState(0);
	const [limit, setLimit] = useState(defaultLimit);
	const [rows, setRows] = useState([] as object[]);
	const [sortBy, setSortBy] = useState('id');
	const [searchTarget, setSearchTarget] = useState('title');
	const [searchKeyword, setSearchKeyword] = useState('');
	const [category, setCategory] = useState({
		category_name: ''
	});
	const [total, setTotal] = useState(0);
	const [isLoading, setIsLoading] = useState(true);

	const sortByList = [
		{key: 'created_time', name: '최신순'},
		{key: 'subscriber_count', name: '구독자순'}
	];
	
	useEffect(() => {
		getList();
	}, [match, offset, sortBy, searchKeyword]);

	// methods
	const getList = async () => {
		let params = {
			limit: limit,
			offset: offset,
			sortBy: sortBy,
			searchTarget: searchTarget,
			searchKeyword: searchKeyword,
			tag: tag.join(',')
		}
		
		let endpoint = `/category/${match.params.categoryMid}?${qs.stringify(params)}`;		
		
		const result = await Http.get(endpoint);

		if (result.data.rows.length === 0) {
			Alert.error('더 이상 없습니다');
			return;
		}

		setTotal(result.data.count);
		setCategory(result.data.category);
		// setRows(result.data.rows);
		setRows(rows.concat(result.data.rows));
		setIsLoading(false);
	}

...

}

/*

- 목록의 기본 파라미터 offset, limit, total 등을 state로 관리하도록 했다. 
- 정렬의 선택지를 배열로 key, name으로 관리하도록 했다.
- getList 메소드에서 서버 요청을 실제 실행하기 전에 params라는 오브젝트를 만들고 이를 스트링으로 변환하는 과정을 거친다. 더 좋은 방법이 없을까?
- (리팩토링) async, await를 사용했지만 setTotal 등의 상태 변경은 더 유연한 방법이 필요할 것 같다. 
- (리팩토링) 페이지네이션 방식의 변경을 대응할 수 있는 유연함 필요

*/