inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹 게임을 만들며 배우는 React

Uncaught TypeError: tries.map is not a function

해결된 질문

410

Bell Vise

작성한 질문수 17

0

function getNumbers() { // 숫자 네 개를 겹치치 않고 랜덤하게 뽑는 함수
  const candidate = [1,2,3,4,5,6,7,8,9]
  const array = []
  for (let i = 0; i<4; i+=1) {
    const chosen = candidate.splice(Math.floor(Math.random()*(9-i)), 1)[0]
    array.push(chosen)
  }
  return array
}

const NumberBaseball = () => {
    const [result, setResult] = useState('')
    const [value, setValue] = useState('')
    const [answer, setAnswer] = useState(getNumbers) // lazy init
    const [tries, setTries] = useState([])

    const submit = (e) => {
        e.preventDefault()
        if (value === answer.join('')) {
          setResult('홈런!')
          setTries(...tries, {try:value, result:'홈런!'})
          alert('게임을 다시 시작합니다!')
          setValue('')
          setAnswer(getNumbers())
          setTries([])
        } else { // 답 틀렸으면
          const answerArray = value.split('').map((v)=> parseInt(v))
          let strike = 0
          let ball = 0
          if(tries.length >= 9) { // 10번 이상 틀렸을 때
            setResult(`10번 넘게 틀려서 실패! 답은 ${answer.join(', ')}였습니다!`)
            alert('게임을 다시 시작합니다!')
            setValue('')
            setAnswer(getNumbers())
            setTries([])
          } else {
            for (let i=0; i<4; i++) {
              if (answerArray[i] === answer[i]) {
                strike += 1
              } else if (answer.includes(answerArray[i])) { 
                ball += 1
              }
            }
            setTries({tries: [...tries, {try:value, result: `${strike} 스트라이크, ${ball} 볼입니다.`}]})
            setValue('')
        }
        }
      }
      
      const change = (e) => {
          setValue(e.target.value)
      }
      

    return (
        <>
        <h1>{result}</h1>
        <form onSubmit={submit}>
            <input maxLength={4} value={value} onChange={change}/>
        </form>
        <div>시도: {tries.length}</div>
        <ul>
          {tries.map((value, index) => {
            return (
              <Try key={`${index+1}차 시도 : ${value.try}`} tryInfo={value} />  
            )
          })}
        </ul>
        </>
    )
}

 

Uncaught TypeError: tries.map is not a function 오류가 뜨는데 원인을 모르겠습니다

 

 

 

 

 

 

 

 

react

답변 1

0

제로초(조현영)

setTries({tries: [...tries, {try:value, result: `${strike} 스트라이크, ${ball...

여기서 tries를 배열이 아니라 객체로 바꿔버리셨네요

npm run dev 실행 시 포트가 안뜨는 문제

0

211

2

timeouts.current를 useEffect 의 input값으로 넣었을때

0

89

2

렌더링 테스트 코드 (Hooks)

0

80

1

Cannot find package 'react-refesh' 이런 에러 뜨시는 분들 보세요.

0

154

1

해당 에러 뜨는 분들 보세요. "Uncaught TypeError: ReactDom.createRoot is not a function"

1

193

1

강사님 레포지토리에서 코드 복사 시 master 브랜치 말고 react18 브랜치꺼 복붙하세요ㅠㅠ

0

99

1

useMemo와 useCallback 사용 시기

0

208

2

onRightClickTd가 작동을 하지 않습니다.

0

228

1

action.type 불러오는 방식

0

222

2

onClickRedo 질문

0

172

1

const Try = require(./Try) 빨간줄

0

249

1

npx webpack 실행시

0

316

1

지뢰찾기 강좌에서 빈칸들 한번에 열기 파트에서 여쭤보고싶은부분이 있어서 글 올립니다.

0

236

1

강좌에서 다루지 않은 기능들은 어떻게 학습하면 좋을까요?

0

311

1

react devtool이 enable 않됩니다.

0

532

2

React 랜더링이 되지 않습니다.

0

414

2

비동기로 동작하는 setState에 대해서

0

332

1

npm run dev 할 때 에러발생

0

480

2

memo, PureComponenet, shouldComponentUpdate 관련 질문

0

207

1

devMiddleware의 필요성

0

353

1

리액트에서 화살표 함수를 사용해야하는 이유

0

937

2

path.join관련질문

0

283

2

2-9. 웹팩 데브 서버와 핫 리로딩 설치과정 시 에러

0

376

1

next.js 에서 이와 비슷한 예제를 돌리고있는데 react랑 달라서 질문 드립니

1

494

4