ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React - props - 1
    Front-end/React 2023. 4. 27. 09:05
    728x90
    반응형

    React props

    React propsproperties의 약자상위(부모) 컴포넌트하위(자식) 컴포넌트에게 값을 전달할때 사용하는 속성이다.

    props상위 컴포넌트props를 사용하여 값을 수정할 수 있지만 자식 컴포넌트에서는 값을 읽기만 가능하기때문에 props단방향 데이터 흐름을 갖는다.

     

    prop 선언방법은 이러하다.

    // 상위(부모) 컴포넌트 
    <자식컴포넌트 props작명={ 보내는값 }></자식컴포넌트>
    
    
    // 하위(자식) 컴포넌트 
    function 자식컴포넌트(props) {
      return (
        <div> props.상위컴포넌트에서 작명한 이름 </div>
      );
    }

     

    // App.js
    /* eslint-disable */
    
    import logo from './logo.svg';
    import './App.css';
    import { useState } from 'react';
    
    
    function App() {
    
      let post = 'Restaurant';
      let postId = 'postId';
      let [title, setTitle] = useState(['Title1', 'Title2', 'Title3']);
      let [blogTItle, setBlogTitle] = useState('ReactBlog');
      let [like, changeLike] = useState([0, 0, 0]);
      let [modal, setModal] = useState(false);
    
      return (
        <div className="App">
          <div className="black-nav">
            <h4 id={postId} style={{ color: 'red', fontSize: '16px' }}>{blogTItle}</h4>
          </div>
    
          <button onClick={() => {
            let copy = [...title];
            copy[0] = 'New Title1';
            setTitle(copy);
          }}>Edit</button>
    
          {
            title.map(function (item, idx) {
              return (
                <div className="list" key={idx}>
                  <h4 onClick={() => {setModal(!modal)}}>{item} <span onClick={() => {
                    let copyLike = [...like];
                    copyLike[idx] += 1;
                    changeLike(copyLike);
                  }}>❤</span> {like[idx]} </h4>
                  <p>4월 26일</p>
                </div>)
            })
          }
    
    	  // props로 title의 속성을 선언하고 부모가 갖고있는 title값을 
          // 하위 컴포넌트에게 전달한다.
          {modal === true ? <Modal title={ title }></Modal> : null}
    
        </div>
      );
    }
    
    
    
    // 파라미터로 전달을 받아 사용할 수 있다.
    function Modal(props) {
      return (
        <div className='modal'>
          <h4>{ props.title[0] }</h4>
          <p>날짜</p>
          <p>상세내용</p>
        </div>
      );
    }
    
    
    export default App;

     

     

     

    반응형

     

     

     

    props여러개 선언하여 값을 전달해 줄 수 있다.

    {/* 상위(부모) 컴포넌트 */}
    {/* color와 title을 하위컴포넌트로 보낸다. */}
    {modal === true ? <Modal color={'yellow'} title={ title }></Modal> : null}
    
    {/* 하위(자식) 컴포넌트 */}
    function Modal(props) {
      return (
      	// color로 값을 받아 사용한다.
        <div className='modal' style={{background: props.color}}>
          <h4>{ props.title[0] }</h4>	// title로 값을 받아 사용한다.
          <p>날짜</p>
          <p>상세내용</p>
        </div>
      );
    }

    728x90
    반응형

    'Front-end > React' 카테고리의 다른 글

    React - input  (0) 2023.05.01
    React - props - 2  (0) 2023.04.27
    React - Component - 3  (0) 2023.04.27
    React - Component - 2  (0) 2023.04.26
    React - Component - 1  (0) 2023.04.26
Designed by Tistory.