React+material-ui로 복사 버튼이 있는 텍스트 상자 만들기

이런



준비



필요한 모듈을 설치합니다.
  • @material-ui : 좋은 느낌의 구성 요소를 제공하는 사람
  • react-copy-to-clipboard : 클립 보드에 사본을 쓰는 사람

  • 이번에는 yarn를 사용합니다.npm를 사용하는 경우 적절하게 읽으십시오.
    $ yarn add @material-ui/core @material-ui/icons react-copy-to-clipboard
    

    이번에는 TypeScript를 사용하기 때문에 react-copy-to-clipboard 형식 정의 파일도 설치합니다.
    $ yarn add --dev @types/react-copy-to-clipboard
    

    샘플 코드


    import React, { useState } from 'react';
    import FormControl     from '@material-ui/core/FormControl';
    import OutlinedInput   from '@material-ui/core/OutlinedInput';
    import IconButton      from '@material-ui/core/IconButton';
    import InputAdornment  from '@material-ui/core/InputAdornment';
    import AssignmentIcon  from '@material-ui/icons/Assignment';
    import Tooltip         from '@material-ui/core/Tooltip';
    import CopyToClipBoard from 'react-copy-to-clipboard';
    
    const TextBoxWithCopyButton: React.FC = () => {
      const [input,   setInput]   = useState<string>('');
      const [openTip, setOpenTip] = useState<boolean>(false);
    
      const handleChangeText = (e: React.ChangeEvent<HTMLInputElement>): void => {
        setInput(e.target.value);
      };
    
      const handleCloseTip = (): void => {
        setOpenTip(false);
      };
    
      const handleClickButton = (): void => {
        setOpenTip(true);
      };
    
      return (
        <FormControl
          variant='outlined'
        >
          <OutlinedInput
            type='text'
            value={input}
            onChange={handleChangeText}
            endAdornment={
              <InputAdornment position="end">
                <Tooltip
                  arrow
                  open={openTip}
                  onClose={handleCloseTip}
                  disableHoverListener
                  placement='top'
                  title='Copied!'
                >
                  <CopyToClipBoard text={input}>
                    <IconButton
                      disabled={input === ''}
                      onClick={handleClickButton}
                    >
                      <AssignmentIcon />
                    </IconButton>
                  </CopyToClipBoard>
                </Tooltip>
              </InputAdornment>
            }
          />
        </FormControl>
      );
    };
    
    export default TextBoxWithCopyButton;
    

    요약



    세세한 해설은 생략합니다.
    Material UI, 나름대로 깨끗한 UI를 간단하게 만들 수 있으므로 정말 편리하네요.

    참고


  • Text Field React component - Material-UI
  • react-copy-to-clipboard - npm
  • 좋은 웹페이지 즐겨찾기