Skip to content
Snippets Groups Projects
LinkPageForm.js 1.82 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { useState, useEffect } from "react";
    import Input from "../components/Input";
    import Button from "../components/Button";
    import { useNavigate } from "react-router-dom";
    
    function LinkPageForm() {
        const [random, setRandom] = useState("");
        const [link, setLink] = useState("");
        const navigate = useNavigate();
    
        const generateRandom = () => {
            const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
            const linkLength = 10;
    
            let randomLink = '';
            for (let i = 0; i < linkLength; i++) {
                const randomIndex = Math.floor(Math.random() * characters.length);
                randomLink += characters[randomIndex];
            }
            setRandom(randomLink);
        };
    
        const copyToClipboard = async (link) => {
            try {
                const textToCopy = `localhost:3000/HomeParticipate/${random}`;
                await navigator.clipboard.writeText(textToCopy);
                alert('클립보드에 복사되었습니다');
            } catch (err) {
                alert('클립보드 복사에 실패하였습니다');
            }
        };
    
        const handleSubmit = (event) => {
            event.preventDefault();
            setLink(`/HomeParticipate/${random}`)
            navigate(link);
        }
        useEffect(() => {
            generateRandom();
        }, [])
        return (
            <form onSubmit={handleSubmit}>
                <div>
                    <Input
                        value={`localhost:3000/HomeParticipate/${random}`}
                    />
                    <Button
                        type="button"
                        onClick={copyToClipboard}
                        text="링크 복사"
                    />
                    <Button
                        type="submit"
                        text="투표 페이지로 이동"
                    />
                </div>
            </form>
        );
    }
    
    export default LinkPageForm;