ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [React] Section 12
    Frontend/React 2023. 11. 7. 19:38
    <input id={props.input.id} {...props.input} />

     

    -> 이렇게 하면 이 객체에 있는 모든 키-값 쌍은 props로 input에 추가된다.

     

    import classes from "./Modal.module.css";
    
    const Backdrop = (props) => {
      return <div className={classes.backdrop} />;
    };
    const ModalOverlay = (props) => {
      return (
        <div className={classes.modal}>
          <div className={classes.content}>{props.children}</div>
        </div>
      );
    };
    const Modal = (props) => {
      <>
        <Backdrop />
        <ModalOverlay>{props.children}</ModalOverlay>
      </>;
    };
    
    export default Modal;

     

    -> 포털을 사용하지 않는 방식

     

    import classes from "./Modal.module.css";
    import ReactDOM from "react-dom";
    const Backdrop = (props) => {
      return <div className={classes.backdrop} />;
    };
    const ModalOverlay = (props) => {
      return (
        <div className={classes.modal}>
          <div className={classes.content}>{props.children}</div>
        </div>
      );
    };
    const portalElement = document.getElementById("overlays");
    const Modal = (props) => {
      <>
        {ReactDOM.createPortal(<Backdrop />, portalElement)}
        {ReactDOM.createPortal(
          <ModalOverlay>{props.children}</ModalOverlay>,
          portalElement
        )}
      </>;
    };
    
    export default Modal;

     

    -> 포털을 사용하는 방식

     

    const cartReducer = (state, action) => {
      if (action.type === "ADD") {
        const updatedItems = state.items.concat();
      }
      return defaultCartState;
    };

     

    -> concat은 push와 다르게 새로운 원소를 추가한 새로운 배열을 반환해준다.

     

    // MealItemForm.js
    import { useRef } from "react";
    import Input from "../../UI/Input";
    import classes from "./MealItemForm.module.css";
    
    const MealItemForm = (props) => {
      const amountInputRef = useRef();
      const submitHandler = (event) => {
        event.preventDefault();
      };
      return (
        <form className={classes.form} onSubmit={submitHandler}>
          <Input
            ref={amountInputRef}
            ...
     // Input.js      
    import classes from "./Input.module.css";
    import React from "react";
    const Input = React.forwardRef((props, ref) => {
      return (
        <div className={classes.input}>
          <label htmlFor={props.input.id}>{props.label}</label>
          <input ref={ref} {...props.input} />
        </div>
      );
    });
    
    export default Input;

     

    -> 사용자 정의 컴포넌트에 ref 전달하는 법

    'Frontend > React' 카테고리의 다른 글

    [React] Section 14  (0) 2023.11.12
    [React] Section 13  (0) 2023.11.09
    [React] Section 11_3  (0) 2023.11.04
    [React] Section 11_2  (0) 2023.11.04
    [React] section 11_1  (0) 2023.11.02
Designed by Tistory.