• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 props를 서로 다른 파일끼리도 사용이 가능할까요??

props를 서로 다른 파일끼리도 사용이 가능할까요??

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #34584

    박현수
    참가자

    const Modal = () => {
        return (
          <div className='modal'>
            <h4>글제목</h4>
            <p>날짜</p>
            <p>상세내용</p>
          </div>
    );
    }

    export default Modal;

    모달함수를 위와 같이 Modal .js 파일을 새로 만들어서 App.js에서  import해서 사용했었는데요

    이 경우에는 props를 사용할 수 없을까요..?

     

     

    #34593

    codingapple
    키 마스터

    다른 파일이어도 상관없습니다 

    #34610

    박현수
    참가자

    시도해봤을때 안되서 주석처리 하고 코딩에플님이 하신것 처럼 했엇는데...지금 주석 풀고 실행해보니 되네요...;;;;;;

    감사합니다(?)ㅎㅎ;;

    import { useState } from 'react';
    import './App.css';
    import Modal from './Modal';

    function App() {
    //블로그 제목 스테이트
      let [logo] = useState(블로그);

    //글 제목 스테이트
      let [articleTitle, setArticleTitle] = useState(
        [남자 코트 추천, 강남 우동 맛집, 파이썬 독학]
        );

    // 좋아요 숫자 올라가게만들기
    let [likeNum, setLikeNum] = useState([0, 0, 0])

    //모달창 여닫기
     let [modal, setModal] = useState(false);
      const modalOpen = () => {
        modal === true ? setModal(false) : setModal(true)
      }
    //모달창 제목 알맞게 변경
      let [modalTitle, setModalTitle] = useState(0);

    //인풋 스테이트
      let [textInput, setTextInput] = useState("");

    //글 추가 함수
    const newArticle = () => {
        let copy = [...articleTitle];
        copy.unshift(textInput);
        setArticleTitle(copy);  

     
      return (
        <div className="App">
          <div className='nav-bar'>
            <h1>{ logo }</h1>
          </div>

          {
            articleTitle.map(function(a, i){
              return(
                <div  className='list' key = {i}>        
                  <h4 onClick={() => {modalOpen(); setModalTitle(i)} }>{ articleTitle[i] }</h4>
                  <span onClick={ () =>              
                  {let copy = [...likeNum];
                  copy[i] = copy[i] + 1;
                  setLikeNum(copy)}}>👍</span>
                  { likeNum[i] }
                  <p>5월 18일 발행</p>
                  <button onClick={ () => {
                    //글 삭제 함수 i 때문에 안쪽에 씀.
                    let copy = [...articleTitle];
                    copy.splice(i, 1);
                    setArticleTitle(copy); }}>글 삭제</button>
                </div>
              );
            })
          }
          <div>
          <input className='textInput' onChange={(e) => { setTextInput(e.target.value) }}></input>
          <button onClick={ () => { newArticle() } }>글 추가</button>
          </div>

          {
            modal === true ? <Modal modalTitle={modalTitle} articleTitle={articleTitle} /> : null
          }   
        </div>
      );
    }

    // const Modal = (props) => {
     
    //   return (
    //     <div className='modal'>
    //       <h4>{props.articleTitle[props.modalTitle]}</h4>
    //       <p>날짜</p>
    //       <p>상세내용</p>
    //       <button>글수정</button>
           
    //     </div>
    // );
    // }

    export default App;

    모달 저장 파일

    const Modal = (props) => {
     
        return (
          <div className='modal'>
            <h4>{props.articleTitle[props.modalTitle]}</h4>
            <p>날짜</p>
            <p>상세내용</p>
            <button>글수정</button>
             
          </div>
      );
      }

    export default Modal;

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠