const [selected, setSelected] = React.useState<readonly string[]>([]);

const handleSelectAllClick = (event: React.ChangeEvent<HTMLInputElement>) => {
  if (event.target.checked) {
    const newSelected = rows.map((n) => n.name);
    setSelected(newSelected);
    return;
  }
  setSelected([]);
};

  const handleClick = (event: React.MouseEvent<unknown>, name: string) => {
    const selectedIndex = selected.indexOf(name);
    let newSelected: readonly string[] = [];

    if (selectedIndex === -1) {
      newSelected = newSelected.concat(selected, name);
    } else if (selectedIndex === 0) {
      newSelected = newSelected.concat(selected.slice(1));
    } else if (selectedIndex === selected.length - 1) {
      newSelected = newSelected.concat(selected.slice(0, -1));
    } else if (selectedIndex > 0) {
      newSelected = newSelected.concat(
        selected.slice(0, selectedIndex),
        selected.slice(selectedIndex + 1)
      );
    }

    setSelected(newSelected);
  };
/**
   * 데이터베이스 타입 목록 조회
   */
  const getDatabaseTypeList = () => {
    DatabaseService.selectDatabaseList().then(response => {
      console.log('selectDatabaseTypeList', response.data);
      if (response.data.status === STATUS.SUCCESS) {
        const list = response.data.data;
        list.map(item => (item.icon = getDatabaseIcon(item.engine)));
        setDatabaseList(list);
				// 여기서 list가 아닌 databaseList에 조건을 걸면 직전에 setState해준 값이 들어가있지 않으므로
				// 아래의 조건이 실행되지 않는다
        if (!isModifyMode && list.length > 0) { 
          setDatabaseId(sourceId);
        }
      }
    });
  };

setState의 비동기성으로 생기는 문제