강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

jinmin2216님의 프로필 이미지
jinmin2216

작성한 질문수

웹 게임을 만들며 배우는 React

리액트 새로고침 (구구단)

작성

·

291

0

선생님의 구구단 코드를 리액트 컴포넌트에 넣어보고 있습니다!

자꾸 구구단을 submit하면 새로고침돼서 state 값이 사라집니다!

새로 고침이 안되게 바꿀 수 있는 방법이 있을까요ㅜㅜ?

import React, { FragmentuseState } from 'react';
import { Link } from 'react-router-dom';

const Multiplication = () => {
  const [gugudanStatesetGugudanState] = useState({
    first: Math.ceil(Math.random() * 9),
    second: Math.ceil(Math.random() * 9),
    value: '',
    result: ''
  });
  const onChange = (e=> {
    setGugudanState({
      ...gugudanState,
      value: e.target.value
    })
  }
  const onSubmit = (e=> {
    //e.preventdefault();
    if (gugudanState.first * gugudanState.second === parseInt(gugudanState.value)) {
      setGugudanState({
        first: Math.ceil(Math.random() * 9),
        second: Math.ceil(Math.random() * 9),
        value: '',
        result: "정답입니다!"
      })
    } else {
      setGugudanState({
        ...gugudanState,
        value: "",
        result: "땡"
      })
    }
  }
  return (
    <Fragment>
      <h2>이곳은 구구단 게임장입니다.</h2>
      <div>{gugudanState.first} 곱하기 {gugudanState.second}는?</div>
      <form onSubmit={(e=> onSubmit(e)}>
        <input type="number" value={gugudanState.value} onChange={(e=> onChange(e)} />
        <button>입력!</button>
      </form>
      <div>{gugudanState.result}</div>
      <Link to="/Game" className="btn btn-light">
        이전으로
      </Link>
    </Fragment >
  );
};

export default Multiplication;

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

e.preventDefault()를 주석처리(//)하셨는데 주석을 푸시면 됩니다.

jinmin2216님의 프로필 이미지
jinmin2216

작성한 질문수

질문하기