따라서, 아래 코드와 같이 HOC(Higher-Order Components)를 사용해보았습니다.
function App() {
const [text, setText] = useState('');
const [todos, setTodos] = useState<TodoType[]>([]);
const handleTextChange = (text: string) => {
setText(text);
};
const handleSubmit = () => {};
return (
<main className='App'>
// blabla~~~
<TodoListArea todoCount={todos.length}>
<TodoListTools />
<Divider />
<TodoList todos={todos} />
</TodoListArea>
</main>
);
}
export default App;
TodoListArea 컴포넌트의 하위 children을 보여줄지, 말지를 할일목록의 갯수가 없으면 하위항목을 보여주지말자! 는 내용으로 적용해보았습니다.
import { ReactNode } from 'react';
interface TodoListAreaProps {
children: ReactNode;
todoCount: number;
}
// NOTE: HOC High order component
const TodoListArea = (props: TodoListAreaProps) => {
if (props.todoCount < 1) return null;
return <>{props.children}</>;
};
export default TodoListArea;