블로그

props 본문

개발자 준비과정/Javascript, React

props

하늘바람a 2024. 5. 15. 22:33

props를 분해할당으로 받기

 

import React from "react";

function MyElem(props) {
  console.log(props); // {name: "son", age: 33}

  const { name, age } = props;
  console.log("name", name); // son
  console.log("age", age); // 33

  return <div></div>;
}

function MyComp({ city, country, price }) {
  // props : {city: "seoul", country:"korea", price: 500}
  console.log("city", city);
  console.log("country", country);
  console.log("price", price);

  return <div></div>;
}

function App(props) {
  return (
    <div>
      <MyElem name="son" age={33} />
      <MyComp city="seoul" country="korea" price={500} />
    </div>
  );
}

export default App;

 

 

props의 값이 없을 때 기본값 할당하는 방법

 

import React from "react";

function MyComp({ name, team = "무소속" }) {
  return (
    <div>
      <ul>
        <li>이름 : {name}</li>
        <li>팀 : {team}</li>
      </ul>
    </div>
  );
}

function App(props) {
  return (
    <div>
      <MyComp name="흥민" age={33} team="토트넘" />
      <MyComp name="길동" age={44} />
    </div>
  );
}

export default App;

 

 

prop의 값 타입은 javascript의 자료형

값은 {}안에 작성
단, string이면 {}생략 가능
import React from "react";

function MyComp(props) {
  return <div></div>;
}

function App(props) {
  return (
    <div>
      {/* props의 값타입은 javascript 값타입 */}
      {/* {}에 값 입력, (string만 생략 가능) */}
      <MyComp
        name={"son"}
        street="gangnam"
        age={3.14}
        address={{ city: "seoul", contry: "us" }}
        foods={["pizza", "coffee"]}
        married={true}
        action={function () {
          console.log("action");
        }}
        someAction={() => console.log("someAction")}
      />
    </div>
  );
}

export default App;

 

props의 명명규칙

  • lowerCamelCase
  • 예약어 쓰지 않기
  • class -> className
  • for -> htmlFor

 

props에 값이 없이 이름만 작성되면 값이 true

 

import React from "react";

function MyComp({ name, age, someProp, otherProp }) {
  console.log("name", name);
  console.log("age", age);
  console.log("someProp", someProp); // true :값없이 작성되면 true
  console.log("otherProp", otherProp); // true
  return <div></div>;
}

function App(props) {
  return (
    <div>
      <MyComp name="son" age={30} someProp otherProp={true} />
    </div>
  );
}

export default App;

 

 


 

 

이벤트 props

 

import React from "react";

function App(props) {
  return (
    <div>
      <button
        onClick={() => console.log("clicked")}
        onMouseEnter={() => console.log("mouse entered")}
        onMouseLeave={() => console.log("mouse leaved")}
      >
        클릭1
      </button>
      <input type="text" onChange={() => console.log("changed")} />
    </div>
  );
}

export default App;

 

 

style props는 객체

import React from "react";

function MyComp({ headColor, bodyColor }) {
  return (
    <div>
      <h1 style={{ color: headColor }}>Lorem.</h1>
      <p style={{ color: bodyColor }}>Lorem ipsum dolor.</p>
    </div>
  );
}

function App(props) {
  return (
    <div>
      <MyComp headColor={"skyblue"} bodyColor={"gold"} />
      <MyComp headColor={"gray"} bodyColor={"linen"} />
    </div>
  );
}

export default App;