프로젝트/개인프로젝트

랜덤 선택 기능

백단비 2023. 8. 1. 10:43

랜덤기능 없는 랜덤밀

랜덤 선택 기능을 넣으려했는데 까먹고 안넣고 있었다.. 이름이 랜덤밀인데 다른 거 신경쓰다가...

마치 홍철이 없는 홍철팀이랄까... 너무 오래된 밈인가 그럼 문어없는 문어빵

랜덤 선택은 간단한 거라서 나중에 해야지하고 생각하다가 이제야.... 

 


나는 선택된 것들을 dialog에 넣어줬기 때문에 useRef를 사용해 modal을 띄워줬다.

카운트는 최대 숫자가 5가 되게 했고 0이 기본값.

만약 숫자가 0인데 버튼을 클릭하면 갯수를 골라달라는 모달이 뜨게 했다.

const [count, setCount] = useState(0);
const [items] = useRecoilState(ItemsState);
const [randomArray, setRandomArray] = useState<Array<number>>([]);
const zeroRef = useRef<HTMLDialogElement>(null);
const randomRef = useRef<HTMLDialogElement>(null);  
  
const onInc = () => {
  if (count < 5) {
	setCount(count + 1);
  }
};
const onDec = () => {
  if (count > 0) {
	setCount(count - 1);
  }
};

const getRandom = (min: number, max: number) => {
  Math.floor(Math.random() * (max - min) + min);
}

const onRandomBtnClick = () => {
  if (count === 0) {
	if (!zeroRef.current) return;
	zeroRef.current.showModal();
	setTimeout(() => {
	  if (!zeroRef.current) return;
	  zeroRef.current.close();
	}, 1000);
  } else {
	  for (let i = 1; i <= count; i++) {
		if (checkedList === 0) {
		  setRandomArray((prev) => [...prev, getRandom(0, itemsList)]);
		} else {
		  setRandomArray((prev) => [...prev, getRandom(0, checkedList)]);
		}
	  }
	  if (!randomRef.current) return;
	  randomRef.current.showModal();
  }
};

const onConfirmClick = () => {
  setRandomArray([]);
  setCount(0);
  randomItems.map((item) => {
	cart.push(item.id);
  });
  localStorage.setItem(`${userId}.cart`, JSON.stringify(cart));
};
const onCancelClick = () => {
  setRandomArray([]);
  setCount(0);
};

 

 

 

320x100

'프로젝트 > 개인프로젝트' 카테고리의 다른 글

[01] portfolio(찐) - metadata  (2) 2023.09.22
[00] portfolio를 만들자(찐)  (0) 2023.09.20
프로젝트는 설계가 중요....  (0) 2023.07.26
와이어프레임  (0) 2023.06.29
RandomShop 살리기 project 00  (0) 2023.06.22