ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React - Component - 2
    Front-end/React 2023. 4. 26. 23:56
    728x90
    반응형

    React Component

    component동적으로 처리하려면 useState를 사용하여 component제어할 수 있다.

    /* 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);
      
      // component를 제어할 useState를 선언한다.
      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>
    
          <div className="list">
            <h4>{title[0]} <span onClick={() => { changeLike(like + 1) }}>❤</span> {like} </h4>
            <p>4월 26일</p>
          </div>
          <div className="list">
            <h4>{title[1]}</h4>
            <p>4월 26일</p>
          </div>
          <div className="list">
            <h4>{title[2]}</h4>
            <p>4월 26일</p>
          </div>
    		
          // 삼항연산자로 useState 상태변경에 따라 component를 제어한다.
          { modal === true ? <Modal></Modal> : null }
    
        </div>
      );
    }
    
    
    function Modal() {
      return (
        <div className='modal'>
          <h4>제목</h4>
          <p>날짜</p>
          <p>상세내용</p>
        </div>
      );
    }
    
    
    export default App;

     

    return() 안에 직접 if문을 사용할 수 없기때문에 삼항연산자(ternary operator)사용하여 component문을 제어한다.

    modal값을 true로 변경하면 component나타난다.

    // modal의 초기값을 true로 설정한다.
    let [modal, setModal] = useState(true);
    
    
    // return() 안에 있는 modal 이 삼항연산자 조건에 만족하여 component가 보여진다.
    { modal === true ? <Modal></Modal> : null }

     

     

     

    반응형

     

     

     

     

    동적으로 처리하기 위해 useState상태값을 변경하면 component제어할 수 있다.

    // 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);
      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>
    
          <div className="list">
            <h4>{title[0]} <span onClick={() => { changeLike(like + 1) }}>❤</span> {like} </h4>
            <p>4월 26일</p>
          </div>
          <div className="list">
            <h4>{title[1]}</h4>
            <p>4월 26일</p>
          </div>
          <div className="list">
          	{/* onClick 이벤트로 modal값을 변경해주도록 한다. */}
            <h4 onClick={() => {setModal(modal = !modal)}}>{title[2]}</h4>
            <p>4월 26일</p>
          </div>
    
          { modal === true ? <Modal></Modal> : null }
    
        </div>
      );
    }
    
    
    function Modal() {
      return (
        <div className='modal'>
          <h4>제목</h4>
          <p>날짜</p>
          <p>상세내용</p>
        </div>
      );
    }
    
    
    export default App;

    3번째 리스트의 Title을 클릭할때 마다 component를 제어할 수있다.

    728x90
    반응형

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

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