Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

한바다

리액트useState&스프링 gradle 본문

React

리액트useState&스프링 gradle

한바다진화 2024. 7. 10. 21:48

☑️ useState()함수

- 컴포넌트(객체)의 상태(state)값이 변하게 될 경우

- 해당하는 객체를 다시 새로고침하여 실행하는 하무

- 다시 새로고침 하다 = 다시 렌더링 하다 = ReRendering = 다시표현하다

- Rendering = 표현

[useState 사용예시]

const TicTapToeTwoStep = () => {
  const [numbers,setNumbers] = useState(
  배열랜덤섞기([...Array(20).keys()].map((n) => n + 1)));
const [nextNumber, setNextNumber] = useState(1);
const [message, setMessage] = useState("")

▶ nextNumber, message => 처음에 가지고 있는 변수 값, 처음에 값이 없으면 없는 상태로 있는 것
   setNextNumber,setMessage => nextNumber,message 값을 변경하기 위한 값
   useState(1), useState("") => 테스트가 처음에 가지고 있을 값

즉 const [초기값, 변동될값] = useState('처음에 들어갈 값이 무엇인지 작성');

 

[코드 해석]

배열랜덤섞기([...Array(20).keys()].map((n) => n + 1))
▶코드는 거꾸로 실행 시킨다. map((n) = > n+1 은 function(n) = {} n+1기능 값을 던져줄 것을
  key에 저장해서 Array는 배열이므로 0~19인데 n+1이 되어서 1~20이 된다.

[위 코드를 그림으로 표현하면 아래와 같다]

☑️ 틱택톡 게임 진행시 오류 발생

✓ classname을  cassname으로 잘못써서 css가 적용되지 않음

[수정 전]

 <div cassName="tictaptoe-grid">

[수정 후]

<div className="tictaptoe-grid">

 

classname 오타로 

한줄에 세개씩 보이게 설정해주는 css가 적용되지 않았다.

grid-template-columns: repeat(3, 100px);

 

[에러코드]

ERROR in ./src/component/TicTapToe.js 6:0-25
Module not found: Error: Cannot find file: 'TicTaptoe.css' does not match the corresponding name on disk: '.\src\component\TicTapToe.css'.
ERROR
▶ css가 정상적으로 import되지 않아서 생긴 오류이다

 

괄호 미적용으로 오류 발생

배열랜덤섞기([...Array(9).keys()].map(n => n +1)));  ->  배열랜덤섞기([...Array(9).keys()].map((n) => n + 1))

:map((n) n을 괄호로 감싸줘야 한다!

 

중괄호 잘못 적용

[수정전]
return {

<h1> useEffect 란 ? </h1>
    <pre>
       useEffect 함수는 컴포넌트(function, const 시작)가 렌더링(되게 하다 세워짐)
       특정 작업을 실행할 수 있도록 하는 Hook

       리액트에서 컴포넌트를 렌더링하다 = 리액트에서 oo.js 코드실행 시작한다
       </pre>
}
[수정후]
return (
   <>
<h1> useEffect 란 ? </h1>
    <pre>
       useEffect 함수는 컴포넌트(function, const 시작)가 렌더링(되게 하다 세워짐)
       특정 작업을 실행할 수 있도록 하는 Hook

       리액트에서 컴포넌트를 렌더링하다 = 리액트에서 oo.js 코드실행 시작한다
       </pre>
     </>
)

▶ 즉 return은 {} 중괄호가 아닌 소괄호 ()로 감싸야 한다. 또한 return 작성후 전체를 감싸주는 태그가 없으면

    빨간줄 발생한다.

 

☑️ 스트링부트 오류 수정

- 어노테이션 올바른 곳에 적용해야 한다.

중복확인 코드 작성 시 @ResponseBody 어노테이션을 코드 위에 써줘야 하는데 상단 public class측에 써둬서

페이지가 노출되지 않았다

- @Slf4j > 로깅을 위한 Lombok 어노테이션으로 log변수를 자동으로 생성하여 콘솔에서 확인해본다!

[오류 확인을 위한 log.info 작성
@GetMapping("/idCheck")
@ResponseBody
//public boolean getId(Model model, @RequestBody String member_id) {
public Map<String, Object> getId(@RequestParam String member_id) {
	log.info("controller-> member_id : "+member_id);
	Map<String, Object> response = new HashMap<String, Object>();
		
	boolean isCount = memberService.getId(member_id);
	log.info("controller-> i : "+member_id);
		
	response.put("isCount", isCount);
	return response;
	}

log.info("controller-> member_id : "+member_id);

log.info("controller-> i : "+member_id);

-위 코드와 같이 상단에 갖고와야 하는 변수명을 찍어보고 화면에서 콘솔화면에서 확인해본다. 해당코드가 찍히지

않았다면 오류가 발생한 부분이다. 찍혔다면 찍히기 위에 부분부터 다시 체크해본다!

 

☑️ 스프링  maven 과 gradle의 폴더 경로

maven

src/main/resource/templates/index.html

gradle

src/main/resource/static/index.html

->그래서 템플릿에다 만들어준 index.html을 static폴더로 이동한다

 

[스프링부트 매개변수 이름 인식 문제 오류]

[Request processing failed: java.lang.IllegalArgumentException: 
Name for argument of type [java.lang.String] not specified, and parameter name information not available via 
reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause= Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.

 

해당오류 콘솔창 확인 시 컨트롤러아이템네임 쪽에서 발생하는 것으로 확인되어

@RequestParam관련해서 아래와 같이 코드를 수정 해보았다

[수정전]
public Map<String, Object> getGoods(@RequestParam String item_name)
[수정후]
public Map<String, Object> getGoods(@RequestParam("item_name") String item_name)

아직 Html에 겟메핑시 가져올 이름이 지정되지 않아 확인후 익일 해당오류 해결안에 대해 작성하도록 하겠다!

'React' 카테고리의 다른 글

[리액트]백엔드와 프론트 연결  (0) 2024.07.16
[리액트]로그인  (0) 2024.07.15
[리액트]Axios와 페이지네이션  (0) 2024.07.12
정규식 작성과 리액트 라우터  (0) 2024.07.11
[리액트]react-router-dom, array&map  (0) 2024.07.08