: 프론트엔드 개발을 위한 Javascript 오픈 소스 라이브러리
💡프레임워크/라이브러리
: Javascript에서 XML을 추가한 확장 문법
→ 브라우저가 바로 실행할 수 있는 코드가 아니기 때문에, Babel을 이용해서 일반 Javascript 코드로 변환
JSX에서 여러 element를 작성하고자 하는 경우, opening tag와 closing tag로 감싸줘야함
element클래스 사용시 className으로 표기
→ class로 작성하게 되면 Javascript라고 생각함
<div className = "greeting">hello!</div>
Javascript 표현식 사용시 중괄호({}) 사용
→ 사용하지 않으면 일반 텍스트로 인식
function App() {
const name = 'Josh Perez';
return (
<div>
Hello, {name}!
</div>
);
}
대문자로 시작해야함
→ 소문자로 작성하게 되면 일반적인 HTML로 인식
function Hello () {
return <div> Hello!</div>
}
function HelloWorld () {
return <Hello/>;
}
조건부 렌더링은 삼항 연산자를 사용
→ 표현식이라서 삼항 연산자를 사용함(그렇지 않으면 return문을 써야함)
<div>
{
(1+1 ===2> ? (<p>정답</p> : (<p>탈락</p>)
}
</div>
여러개의 HTML element를 표시할때 .map사용
⭐️ map 함수 작성시 반드시 “Key” JSX 속성을 넣어야함
→ 리액트가 어떤 항목을 변경, 추가, 삭제할지 파악(식별) 가능/ 안정적인 고유성 부여를 위해 배열 내부에 지정
const posts = [
{ id: 1, title: "Hello World", content: "Welcome to learning React" },
{ id: 2, title: "Installation", content: "You can install React from npm" }
];
export default function App() {
// 한 포스트의 정보를 담은 객체 post를 매개변수로 받고
// obj를 JSX 표현식으로 바꿔 리턴해주는 함수 postToJSX
const postToJSX = (post) => {
return (
<div key={post.id}>
<h3>{post.title}</h3>
<p>{post.content}</p>
</div>
);
};
return (
<div className="App">
<h1>Hello JSX</h1>
{posts.map(postToJSX)}
</div>
);
}
: 하나의 기능 구현을 위한 여러 종류의 코드 묶음 (UI를 구성하는 필수요소)
: 리액트 SPA를 쉽고 빠르게 개발가능하게 만들어진 툴 체인 //SPA는 내일 배울 예정!
npx create-react-app 폴더이름
: React로 개발하다보면 파일이 커지면서 여러개의 파일로 나눠지게 되는데 이때 분리된 파일들의 이름을 모듈이라함 → 다른 모듈안에 있는 값을 불러오는 import와 모듈 내에 있는 값을 외부로 내보내는 export가 있다.
import Data from './data.js';
💡[참고]const computer = ['desktop', 'keyboard', 'mouse']
function hello() {
console.log ('hello world'(
}
export {computer, hello}
A(정답)
let langs = ["JavaScript", "HTML", "Python"];
let viewLangs = () => {
return langs.map((it) => {
return <p>{it}</p>;
});
};
return (
<div>
{[오답 이유]
viewLangs가 화살표 함수 표현식으로 선언되었기 때문에 함수를 호출하는 연산자 ()를 써야 작동}
{viewLangs} -> {viewLangs()}
</div>
);
B.
let langs = ["JavaScript", "HTML", "Python"];
let viewLangs = langs.map((it) => {
return <p>{it}</p>;
});
return (
<div>
{viewLangs}
</div>
);
C.
{주의할점! 화살표함수에서 중괄호{}를 쓰게 되면 꼭 return이 존재해야함,
return이 없다면 undefined를 반환함}
let langs = ["JavaScript", "HTML", "Python"];
return (
<div>
{langs.map((it) => {
return <p>{it}</p>;
})}
</div>
);
D.
let langs = ["JavaScript", "HTML", "Python"];
return (
<div>
{langs.map((it) => (
<p>{it}</p>
))}
</div>
);
오늘은 리액트 첫날
수업의 내용과 과제가 크게 어렵지는 않았지만, 뭔가 흐름을 이해하는데는 시간이 좀 걸릴 것 같다
이 또한 계속 보다보면 이해가 되겠지
일단 주말동안 자바스크립트 언어를 많이 익숙해지기 위해 딥다이브 열심히 파야겠다
화이팅!