본문 바로가기

프론트엔드관련 책예제실습정리/리기술요약

컴포넌트 반복

 

map메서드를 활용한 li 반복

///App.js
import React, { Component } from "react";
import IterationSample from "./IterationSample";

class App extends Component {
  render() {
    return <IterationSample />;
  }
}
export default App;


///IterationSample.js
import React from "react";
const IterationSample = () => {
  //return (
  // <ul>
  //   <li>눈사람</li>
  //   <li>얼음</li>
  //   <li>눈</li>
  //   <li>바람</li>
  // </ul>
  //);
  const names = ["눈사람", "얼음", "눈", "바람"];
  const nameList = names.map((name, index) => <li key={index}>{name}</li>);
  return <ul>{nameList}</ul>;
};

export default IterationSample;

button 클릭시 input 값 추가

///IterationSample.js
import React, { useState } from "react";

const IterationSample = () => {
  const [names, setNames] = useState([
    { id: 1, text: "눈사람" },
    { id: 2, text: "얼음" },
    { id: 3, text: "눈" },
    { id: 4, text: "바람" },
  ]);
  const [inputText, setInputText] = useState("");
  const [nextId, setNextId] = useState(5);
  const onChange = (e) => setInputText(e.target.value);
  const onClick = () => {
    const nextNames = names.concat({
      id: nextId,
      text: inputText,
    });
    setNextId(nextId + 1);
    setNames(nextNames);
    setInputText("");
  };

  const nameList = names.map((name) => <li key={name.id}>{name.text}</li>);
  return (
    <>
      <input value={inputText} onChange={onChange} />
      <button onClick={onClick}>추가</button>
      <ul>{nameList}</ul>;
    </>
  );
};

export default IterationSample;

'프론트엔드관련 책예제실습정리 > 리기술요약' 카테고리의 다른 글

08hooks/커스텀 hook만들기  (0) 2021.06.22
08hooks/useMemo,useCallback,useRef  (0) 2021.06.22
ref:DOM에 이름달기  (0) 2021.06.11
이벤트핸들링2  (0) 2021.06.04
이벤트핸들링1  (0) 2021.06.04