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

home2 게시판 React 게시판 map 에서 i 전달방법

map 에서 i 전달방법

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

    박지오
    참가자
    질문 굵은 글씨로했습니다. 
    읽어주시면 감사하겠습니다. 
    
    import { useState, useEffect } from "react";
    import "./Home.css";
    const Home = () => {
      const [todos, setTodos] = useState(["할일1", "할일2", "할일3", "할일4"]);
      const [post, setPost] = useState("");
      const [postDelete, setPostDelete] = useState(false);
      const [writePopup, setWritePopup] = useState(false);
      const [editPopup, setEditPopup] = useState(false);
      const [editValue, setEditValue] = useState(todos[1].text);
      return (
        <body>
          <div className="container">
            <h1 className="header">Todo List</h1>
            <button
              className="todo-write"
              onClick={() => {
                setWritePopup(!writePopup);
              }}
            >
              글쓰기
            </button>{" "}
            {todos.map((a, i) => {  요기 map의 i를  다를 컴포넌트에도 전달하고싶습니다.
              return (
                <main key={i}>
                  <p>{todos[i]}</p>
                  <button
                    className="todo-delete"
                    onClick={() => {
                      if (window.confirm("정말 삭제합니까?")) {
                        let copy = [...todos];
                        copy.splice(i, 0);
                        setTodos(copy);
                        alert("삭제되었습니다.");
                      } else {
                        alert("취소합니다.");
                      }
                    }}
                  >
                    휴지통
                  </button>
                  <button
                    onClick={() => {
                      setEditPopup(!editPopup);
                    }}
                  >
                    수정
                  </button>
                </main>
              );
            })}
            {editPopup == true ? (
              <TodoWEditPopup
                todos={todos}
                setEditPopup={setEditPopup}
                editPopup={editPopup}
                post={post}
                setTodos={setTodos}
                setPost={setPost}
                editValue={editValue}
              />
            ) : null}
            {writePopup == true ? (
              <TodoWritePopup
                setWritePopup={setWritePopup}
                writePopup={writePopup}
                post={post}
                setTodos={setTodos}
                todos={todos}
                setPost={setPost}
              />
            ) : null}
          </div>
        </body>
      );
    };
    const TodoWritePopup = (props) => {
      return (
        <body>
          <div className="write-popup-background">
            <div className="write-popup-head">
              <h4>할일을 입력하세요.</h4>
              <button
                onClick={() => {
                  props.setWritePopup(!props.writePopup);
                }}
              >
                X
              </button>
            </div>
            <input
              className="write-popup-input"
              type="text"
              onChange={(e) => {
                props.setPost(e.target.value);
              }}
            />
            <button
              onClick={() => {
                if (window.confirm("작성하시겠습니까?")) {
                  let copy = [...props.todos];
                  copy.unshift(props.post);
                  props.setTodos(copy);
                  alert("작성되었습니다.");
                } else {
                  alert("취소합니다.");
                }
              }}
            >
              글쓰기
            </button>
          </div>
        </body>
      );
    };
    const TodoWEditPopup = (props) => {
      const [text, setText] = useState(props.todos[1]);  예를 들면 이런곳이요. props.todos[i]를 넣으면 에러가 나서 
     1로해놨습니다. 
    어떻게하면 가능할까요? 
    i={i}이렇게 등록해도 안되네요.
      return (
        <body>
          <div className="write-popup-background">
            <div className="write-popup-head">
              <h4>수정해주세요.</h4>
              <button
                onClick={() => {
                  props.setEditPopup(!props.editPopup);
                }}
              >
                X
              </button>
            </div>
            <input
              className="write-popup-input"
              type="text"
              value={text}
              onChange={(e) => {
                console.log(e.target.value);
                setText(e.target.value);
              }}
            />
            <button
              onClick={() => {
                let copy = [...props.todos];
                copy.slice(1, 0, "할일없음");
                props.setTodos(copy);
              }}
            >
              수정하기
            </button>
          </div>
        </body>
      );
    };
    export default Home;
     
    #56964

    codingapple
    키 마스터
    함수안에 있는 파라미터나 변수는 바깥에서 사용불가능합니다 
    변수를 바깥에 만들어두거나 하는게 아니면요
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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