React+material-ui로 복사 버튼이 있는 텍스트 상자 만들기
9025 단어 ReactTypeScriptmaterial-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를 간단하게 만들 수 있으므로 정말 편리하네요.
참고
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를 간단하게 만들 수 있으므로 정말 편리하네요.
참고
Reference
이 문제에 관하여(React+material-ui로 복사 버튼이 있는 텍스트 상자 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koki_develop/items/211f04f59371c752bd88텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)