
Добавление функции копирования и вставки текста на ваш веб-сайт очень удобно, она упрощает процесс для пользователей, но возникают ли у вас трудности с ее реализацией?
В этой статье я дал пошаговые инструкции о том, как реализовать функцию копирования и вставки текста.
Я упомянул ссылку на репозиторий Github в конце статьи.

- Импортируйте необходимые зависимости
import { useRef } from 'react'
import React from 'react'
import ClipboardJS from 'clipboard'
Хук useRef используется для доступа к элементу текстовой области, ClipboardJS — это библиотека для работы с буфером обмена.
2. Определите функциональный компонент CopyPaste, который возвращает форму с текстовой областью и двумя кнопками.
function CopyPaste() {
const textAreaRef = useRef(null)
...
return (
<div style={{ color: 'white' }}>
<form>
<label htmlFor="name">Name:</label>
<input
type="text"
ref={textAreaRef}
id="name"
className="form-control mb-2"
/>
<button
className="btn btn-outline-warning m-2 btn-copy"
data-clipboard-target="#name"
>
Copy
</button>
<button
className="btn btn-outline-info m-2"
onClick={pasteFromClipboard}
>
Paste
</button>
</form>
</div>
)
}
Текстовая область создается с помощью элемента input, а атрибуту ref присваивается значение textAreaRef для доступа к нему в компоненте.
3. Реализуйте функцию копирования
React.useEffect(() => {
new ClipboardJS('.btn-copy', {
text: function(trigger) {
return trigger.getAttribute('aria-label')
}
})
}, [])
Здесь хук useEffect используется для вызова конструктора ClipboardJS при монтировании компонента. Селектор .btn-copy используется для выбора кнопки копирования, и текст в текстовой области с id из name будет скопирован при нажатии кнопки.
4. Реализуйте функцию вставки
const pasteFromClipboard = (e) => {
e.preventDefault()
navigator.clipboard
.readText()
.then((text) => {
textAreaRef.current.value = text
})
.catch((error) => {
console.error(error)
})
}
Функция pasteFromClipboard считывает текст из буфера обмена с помощью navigator.clipboard.readText и обновляет значение текстовой области возвращенным текстом. e.preventDefault используется для предотвращения поведения отправки формы по умолчанию.
5. Экспорт компонента
export default CopyPaste
6. Окончательный код должен выглядеть так:
import { useRef } from 'react'
import React from 'react'
import ClipboardJS from 'clipboard'
function CopyPaste() {
const textAreaRef = useRef(null)
React.useEffect(() => {
new ClipboardJS('.btn-copy', {
text: function(trigger) {
return trigger.getAttribute('aria-label')
}
})
}, [])
const pasteFromClipboard = (e) => {
e.preventDefault()
navigator.clipboard
.readText()
.then((text) => {
textAreaRef.current.value = text
})
.catch((error) => {
console.error(error)
})
}
const copyToClipboard = (e) => {
e.preventDefault()
}
return (
<div style={{ color: 'white' }}>
<form>
<label htmlFor="name">Name:</label>
<input
type="text"
ref={textAreaRef}
id="name"
className="form-control mb-2"
/>
<button
className="btn btn-outline-warning m-2 btn-copy"
data-clipboard-target="#name"
onClick={copyToClipboard}
>
Copy
</button>
<button
className="btn btn-outline-info m-2"
onClick={pasteFromClipboard}
>
Paste
</button>
</form>
</div>
)
}
export default CopyPaste
Ссылка на репозиторий GitHub: https://github.com/vishwanath16/React-Copy-Paste-Example
Как запустить проект?
Начиная
Чтобы запустить проект, выполните следующие действия:
- Клонировать репозиторий
клон git https://github.com/vishwanath16/React-Copy-Paste-Example.git
2. Установите зависимости
cd реагировать-копировать-вставить npm установить
3. Запустите сервер разработки
запуск нпм
Проект будет работать по адресу https://localhost:3000/.
Предпосылки
Для запуска этого проекта вам понадобятся следующие инструменты:
- Node.js
- npm (менеджер пакетов узла)
Построен с
- React — JavaScript-библиотека для создания пользовательских интерфейсов.
- ClipboardJS — современный подход к копированию текста в буфер обмена.