⭐ filter() 함수
: 요소를 걸러서 모든 요소를 모아 새로운 배열로 반환
ex) const words = ['배수지','유인나,'정인선'];
const result = words.filter(word => word.length > 6)'
word
는 사용자 정의 + 화살표 함수의 매개변수임⭐ Map() 함수 - 반복
: 자바스크립트 배열의 내장 함수
: 파라미터로 전달된 함수를 사용해, 원하는 규칙에 따라 변환한 후 새로운 배열 생성
ex) const 함수명 = () => {
const names = ['바람', '눈', '비'];
const nameList = names.map((name) => <li>{name}</li>);
return <ul>{nameList}</ul>
}
key props
가 없다고 오류뜸✏️ Test1.
💻 입력
📂C:\VSCode\react>yarn create react-app test6
폴더만들기
📂 survey
폴더 만들기
⬇️ Survey.js
import React, { useState } from 'react';
import SurveyStep1 from './SurveyStep1';
import SurveyStep2 from './SurveyStep2';
import SurveyStep3 from './SurveyStep3';
import SurveyStep4 from './SurveyStep4';
import './style.css'
const Survey = () => {
const [step,setStep] = useState(1)
const [form,setForm] = useState({
name:'',age:'',addr:'',tel:'',
job:'',email:'',gender:'',hobby:''})
//비구조할당
const {name,age,addr,tel,job,email,gender,hobby} = form
const onText = (evt) => {
const {value,name} = evt.target
setForm({
...form,
[name]:value
})
}
const onNext = () => {
setStep(state => state + 1)
}
const onPrev = () => {
setStep(state => state - 1)
}
return (
<div className='wrap'>
{step===1 && <SurveyStep1 name={name} age={age} addr={addr} tel={tel} onText={onText} onNext={onNext}/>}
{step===2 && <SurveyStep2 job={job} email={email} gender={gender} hobby={hobby} onNext={onNext} onPrev={onPrev} onText={onText}/>}
{step===3 && <SurveyStep3 form={form} onPrev={onPrev} onNext={onNext}/>}
{step===4 && <SurveyStep4 name={name}/>}
</div>
);
};
export default Survey;
⬇️ SurveyStep1.js
넘어오는 데이터 받을 거임
import React from 'react';
const SurveyStep1 = ({name,age,addr,tel,onText,onNext}) => {
return (
<>
<p>
<label>이름</label>
<input type="text" value={name} name='name' onChange={onText}/>
</p>
<p>
<label>나이</label>
<input type="text" value={age} name='age' onChange={onText}/>
</p>
<p>
<label>주소</label>
<input type="text" value={addr} name='addr' onChange={onText}/>
</p>
<p>
<label>연락처</label>
<input type="text" value={tel} name='tel' onChange={onText}/>
</p>
<p>
<button onClick={onNext}>다음</button>
</p>
</>
);
};
export default SurveyStep1;
⬇️ SurveyStep2.js
import React from 'react';
const SurveyStep2 = ({job,email,gender,hobby,onText,onNext,onPrev}) => {
return (
<>
<p>
<label>직업</label>
<input type="text" value={job} name='job' onChange={onText} />
</p>
<p>
<label>이메일</label>
<input type="text" value={email} name='email' onChange={onText} />
</p>
<p>
<label>성별</label>
<input type="text" value={gender} name='gender' onChange={onText} />
</p>
<p>
<label>취미</label>
<input type="text" value={hobby} name='hobby' onChange={onText} />
</p>
<p>
<button onClick={onPrev}>이전</button>
<button onClick={onNext}>다음</button>
</p>
</>
);
};
export default SurveyStep2;
⬇️ SurveyStep3.js
마지막 결과
창
import React from 'react';
const SurveyStep2 = ({form,onNext,onPrev}) => {
//비구조할당
const {name,age,addr,tel,job,email,gender,hobby} = form
return (
<>
<ul>
<li><span>이름</span>:<em>{name}</em></li>
<li><span>나이</span>:<em>{age}</em></li>
<li><span>주소</span>:<em>{addr}</em></li>
<li><span>연락처</span>:<em>{tel}</em></li>
<li><span>직업</span>:<em>{job}</em></li>
<li><span>이메일</span>:<em>{email}</em></li>
<li><span>성별</span>:<em>{gender}</em></li>
<li><span>취미</span>:<em>{hobby}</em></li>
</ul>
<p>
<button onClick={onPrev}>이전</button>
<button onClick={onNext}>다음</button>
</p>
</>
);
};
export default SurveyStep2;
⬇️ SurveyStep4.js
감사합니다
창import React from 'react';
const SurveyStep2 = ({name}) => {
return (
<>
<h2>
<span>{name}님</span>
설문조사 감사합니다
</h2>
</>
);
};
export default SurveyStep2;
`
✅ 결과
✏️ Test2.
💻 입력
10이내의 난수 고유번호 부여
임의의 이름을 가져와서 일련번호 부여
1번부터 시작해서 일ㄹ렬번호 생성
커서 / 데이터 입력하기
import React,{useRef, useState} from 'react';
const Test3 = () => {
const no = useRef(1)
//커서
const textRef = useRef()
const [data,setData] = useState([])
const [text,setText] = useState('')
const onText = (evt) => {
const {value} = evt.target
setText(value)
}
const onAdd = (evt) => {
//엔터치고 새로고침하지마
evt.preventDefault()
setData([
...data,
{
id:no.current++,
text:text
}
])
setText('')
textRef.current.focus()
}
return (
<div>
<form onSubmit={onAdd}>
<input type='text' onChange={onText} value={text} name='text' ref={textRef}/>
<button>추가</button>
</form>
<ul>
{
data.map(item => <li key={item.id}>
{item.id} / {item.text}
</li>)
}
</ul>
</div>
);
};
export default Test3;
✏️ Test3.
💻 입력
이미지 넣기
src
안에 있는 이미지 가져오는 방법: 변수명 써서 import
public
안에 있는 이미지 가져오는: public은 직접 호출!!
✏️ Test4.
💻 입력
📂C:\VSCode\react>yarn create react-app test7
폴더만들기
일반 alert창 뜨게 하는법
###📌 매개변수 넘기는 법 = 함수형으로 묶어야함
✏️ Test5.
💻 입력
삭제
✏️ Test6.
💻 입력
⬇️ Movies.js
import React,{useState} from 'react';
import './style.css';
import MovieList from './MovieList';
import movieData from '../assets/api/movie'
const Movies = () => {
const [data,setData] = useState(movieData)
return (
<div className="wrap">
<h2>최신 개봉작</h2>
<MovieList data={data}/>
</div>
);
};
export default Movies;
⬇️ MovieList.js
import React from 'react';
import MovieItem from './MovieItem';
const MovieList = ({data}) => {
return (
<div className="movie">
{
data.map(item => <MovieItem key={item.no} item={item}/>)
}
</div>
);
};
export default MovieList;
⬇️ MovieItem.js
import React from 'react';
const MovieItem = ({item}) => {
const {no,poster,title,actor,director,date} = item
return (
<article>
<div className="left">
<img src={poster} alt={title} />
</div>
<div className="right">
<h3>{title}</h3>
<ul>
<li>출연진: {actor} </li>
<li>감독: {director} </li>
<li>개봉일: {date} </li>
</ul>
<button>삭제</button>
</div>
</article>
);
};
export default MovieItem;
✏️ Test7.
💻 입력
이렇게나, export default [데이터내용]
이렇게 쓸 수도 있음
✏️ Test8.
💻 입력
5번 메뉴판 반복
첫번째 문자만 대문자로 바꾸고싶을 떈
slice(1) : 1qnxj wkfmrl
📌 검색
✏️ Test8.
💻 입력
추가
삭제
: 삭제하려면 매개변수 id 넘겨야함