250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ใ…ฃใ„ท
  • ์ปดํฌ์ง€์…˜
  • MySQL
  • ์œ„์ž„

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

[React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (2) ๋ฆฌ์•กํŠธ ๊ฐ€์œ„๋ฐ”์œ„๋ณด ๊ฒŒ์ž„
Javascript/React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ

[React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (2) ๋ฆฌ์•กํŠธ ๊ฐ€์œ„๋ฐ”์œ„๋ณด ๊ฒŒ์ž„

2022. 12. 4. 21:31
728x90

ํ”„๋กœ์ ํŠธ ๊ตฌ์ถ•

 

 

๋ฆฌ์•กํŠธ ๊ฐ€์œ„๋ฐ”์œ„๋ณด ๊ฒŒ์ž„

 

 

 

Box 2๊ฐœ ๋งŒ๋“ค๊ธฐ(๋‚˜ ๋ฒ„์ „, ์ปดํ“จํ„ฐ ๋ฒ„์ „)

src ์•„๋ž˜์— component ํด๋” ๋งŒ๋“ค๊ณ  Box.js ๋งŒ๋“ค์–ด์คŒ

์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋‹จ์ถ•ํ‚ค : 

  • ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“œ๋Š” ๋‹จ์ถ•ํ‚ค : rafce
  • ๋‹จ์ถ•ํ‚ค๊ฐ€ ์•ˆ๋‚˜์˜ฌ ๊ฒฝ์šฐ ์„ค์น˜ extention

  • ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค์‹œ ์ฃผ์˜์‚ฌํ•ญ:
    • ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘
      ๋ฆฌ์•กํŠธ๊ฐ€ ์ปดํฌ๋„ŒํŠธ์™€ ์ผ๋ฐ˜ HTMLํƒœ๊ทธ(<div>,<p>๋“ฑ..)์„ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํƒœ๊ทธ๊ฐ€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ด๋‹ค ๋”ฐ๋ผ์„œ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘์„ ํ•˜๋ฉด ์ผ๋ฐ˜ HTMLํƒœ๊ทธ๋กœ ๋ถ„๋ฅ˜ํ•ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ!

 

App.js / Box.js / App.css ์ฝ”๋“œ

(1) ์œ ์ €๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์œ„, ๋ฐ”์œ„, ๋ณด ๋ฒ„ํŠผ

(2) ์œ ์ €๊ฐ€ ์„ ํƒํ•œ ๊ฐ€์œ„, ๋ฐ”์œ„, ๋ณด ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์—ฌ์ง€๋Š” UI ์„ธํŒ…

(3) ์ปดํ“จํ„ฐ ์ถœ๋ ฅ ๊ฐ€์œ„, ๋ฐ”์œ„, ๋ณด ์ด๋ฏธ์ง€๊ฐ€ ์œ ์ € ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค ๋žœ๋คํ•˜๊ฒŒ UI ์„ธํŒ…

 

App.js

import { useState } from 'react';
import Box from "./component/Box";
import './App.css'

const chioce = {
	rock: {
		name: 'Rock',
		img: "https://us.123rf.com/450wm/grgroup/grgroup1705/grgroup170505604/78932529-%EB%B0%94%EC%9C%84-%EB%B2%A1%ED%84%B0-%EC%9D%BC%EB%9F%AC%EC%8A%A4%ED%8A%B8-%EB%A0%88%EC%9D%B4-%EC%85%98%EC%9D%98-%EB%8D%A9%EC%96%B4%EB%A6%AC%EC%99%80-%EC%BB%AC%EB%9F%AC-%EB%B0%B0%EA%B2%BD.jpg",
	},
	scissors: {
		name: 'Scissors',
		img: "https://static.vecteezy.com/system/resources/previews/003/240/783/original/scissor-illustration-in-flat-design-vector.jpg",
	},
	paper: {
		name: 'Paper',
		img: "https://llllline.com/images/thumbs/0000017701_hand-palm-graphic-ai-vector_800.jpeg",
	},
}
function App() {

	const [userSelect, setUserSelect] = useState(null);
	const [computerSelect, setcomputerSelect] = useState(null);

	const play = (userChoice) => {
		setUserSelect(chioce[userChoice]);
		let computerChoice = randomChoice();
		setcomputerSelect(computerChoice);

	}

	const randomChoice = () => {
		let itemArray = Object.keys(chioce); //๊ฐ์ฒด์— ํ‚ค๊ฐ’๋งŒ ๋ฝ‘์•„์„œ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜
		let randomItem = Math.floor(Math.random() * itemArray.length);
		let final = itemArray[randomItem];
		return chioce[final];
	}
	return (
		<div>
			<div className='main'>
				<Box title="You" item={userSelect} />
				<Box title="Computer" item={computerSelect} />
			</div>
			<div className='main'>
				<button onClick={() => play('scissors')}>๊ฐ€์œ„</button>
				<button onClick={() => play('rock')}>๋ฐ”์œ„</button>
				<button onClick={() => play('paper')}>๋ณด</button>
			</div>
		</div>
	);
}

export default App;

 

Box.js

import { React } from 'react';

function Box(props) {
	return (
		<div>
			<div className='box'>
				<h1>{props.title}</h1>
				<img className="item-img" src={props.item && props.item.img}></img>
			</div>
			<div><h1>Win</h1></div>;
		</div>

	);
}

export default Box;

App.js

.box {
  border: 1px solid black;
  width: 500px;
  height: 500px;
}

.item-img {
	width: 400px;
}

.main {
	display: flex;
	justify-content: center;
}

 

์Šน์ž ๊ฐ€๋ฆฌ๊ธฐ

App.js

import { useState } from 'react';
import Box from "./component/Box";
import './App.css'

const chioce = {
	rock: {
		number: 0,
		name: 'Rock',
		img: "https://us.123rf.com/450wm/grgroup/grgroup1705/grgroup170505604/78932529-%EB%B0%94%EC%9C%84-%EB%B2%A1%ED%84%B0-%EC%9D%BC%EB%9F%AC%EC%8A%A4%ED%8A%B8-%EB%A0%88%EC%9D%B4-%EC%85%98%EC%9D%98-%EB%8D%A9%EC%96%B4%EB%A6%AC%EC%99%80-%EC%BB%AC%EB%9F%AC-%EB%B0%B0%EA%B2%BD.jpg",
	},
	scissors: {
		number: 1,
		name: 'Scissors',
		img: "https://static.vecteezy.com/system/resources/previews/003/240/783/original/scissor-illustration-in-flat-design-vector.jpg",
	},
	paper: {
		number: 2,
		name: 'Paper',
		img: "https://llllline.com/images/thumbs/0000017701_hand-palm-graphic-ai-vector_800.jpeg",
	},
}
function App() {

	const [userSelect, setUserSelect] = useState(null);
	const [computerSelect, setcomputerSelect] = useState(null);
	const [result, setResult] = useState("");
	const [computerResult, setComputerResult] = useState("");

	const play = (userChoice) => {
		setUserSelect(chioce[userChoice]);
		let computerChoice = randomChoice();
		setcomputerSelect(computerChoice);
		setResult(judgement(chioce[userChoice], computerChoice));
		setComputerResult(computerJudgement(chioce[userChoice], computerChoice));
	}

	const judgement = (user, computer) => {
		if (user.number == computer.number) {
			return "Tie";
		} return user.number > computer.number ? "Win" : "Lose";
	}

	const computerJudgement = (user, computer) => {
		if (user.number == computer.number) {
			return "Tie";
		} return user.number > computer.number ? "Lose" : "Win";
	}



	const randomChoice = () => {
		let itemArray = Object.keys(chioce); //๊ฐ์ฒด์— ํ‚ค๊ฐ’๋งŒ ๋ฝ‘์•„์„œ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜
		let randomItem = Math.floor(Math.random() * itemArray.length);
		let final = itemArray[randomItem];
		return chioce[final];
	}
	return (
		<div>
			<div className='main'>
				<Box title="You" item={userSelect} result={result} />
				<Box title="Computer" item={computerSelect} result={computerResult} />
			</div>
			<div className='main'>
				<button onClick={() => play('scissors')}>๊ฐ€์œ„</button>
				<button onClick={() => play('rock')}>๋ฐ”์œ„</button>
				<button onClick={() => play('paper')}>๋ณด</button>
			</div>
		</div>
	);
}

export default App;

Box.js

import { React } from 'react';

function Box(props) {
	return (
		<div>
			<div className='box'>
				<h1>{props.title}</h1>
				<img className="item-img" src={props.item && props.item.img}></img>
			</div>
			<div><h1>{props.result}</h1></div>;
		</div>

	);
}

export default Box;
728x90

'Javascript > React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (6) npm ๋ฆฌ์•กํŠธ ๋กœ๋”ฉ์Šคํ”ผ๋„ˆ + ์œ„์น˜ ๋„์‹œ ๊ธฐ๋ฐ˜ ๋‚ ์”จ ์•ฑ ์™„์„ฑ  (0) 2022.12.10
[React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (5) react one-way data flow + ์œ„์น˜ ๋„์‹œ ๊ธฐ๋ฐ˜ ๋‚ ์”จ ์•ฑ ๊ณ„์† making  (0) 2022.12.09
[React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (4) ์œ„์น˜ ๋„์‹œ ๊ธฐ๋ฐ˜ ๋‚ ์”จ ์•ฑ (api ์—ฐ๊ฒฐ ๊ธฐ์ดˆ์ž‘์—…, UI์ž‘์—… )  (1) 2022.12.07
[React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (3) ๋ฆฌ์•กํŠธ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ, ๋ผ์ดํ”„ ์‚ฌ์ดํด  (0) 2022.12.05
[React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (1) ๋ฆฌ์•กํŠธ์˜ ์ปจ์…‰ state  (0) 2022.12.02
    'Javascript/React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (5) react one-way data flow + ์œ„์น˜ ๋„์‹œ ๊ธฐ๋ฐ˜ ๋‚ ์”จ ์•ฑ ๊ณ„์† making
    • [React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (4) ์œ„์น˜ ๋„์‹œ ๊ธฐ๋ฐ˜ ๋‚ ์”จ ์•ฑ (api ์—ฐ๊ฒฐ ๊ธฐ์ดˆ์ž‘์—…, UI์ž‘์—… )
    • [React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (3) ๋ฆฌ์•กํŠธ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ, ๋ผ์ดํ”„ ์‚ฌ์ดํด
    • [React + Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ] (1) ๋ฆฌ์•กํŠธ์˜ ์ปจ์…‰ state
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”