Создайте динамические c поля с помощью реакции - PullRequest
0 голосов
/ 09 мая 2020

Я использую приложение create-response-app

У меня есть следующие поля:

<div className="flex flex-col md:flex-row pb-4 mb-4">
                            <div className="w-64 font-bold h-6 mx-2 mt-3 text-gray-800">Datos de contacto
                            <div><button type="button" className="mr-3 text-sm bg-blue-500 hover:bg-blue-700 text-white py-1 px-5 rounded focus:outline-none focus:shadow-outline">+</button></div>
                        </div>
                            <div className="border-b border-gray-200">
                                <div className="flex flex-col md:flex-row">
                                    <div className="w-full  mx-2">
                                        <div className="my-2 p-1 bg-white flex border border-gray-200 rounded">
                                            <input 
                                            placeholder="Nombre del contacto" 
                                            name="nombre"
                                            value={nombre}
                                            onChange={onChange}
                                            className="p-1 px-2 appearance-none outline-none w-full text-gray-800 " /> </div>
                                    </div>
                                    <div className="w-full  mx-2">
                                        <div className="my-2 p-1 bg-white flex border border-gray-200 rounded">
                                            <input 
                                            placeholder="Email" 
                                            name="email" 
                                            value={email}
                                            onChange={onChange}
                                            className="p-1 px-2 appearance-none outline-none w-full text-gray-800 " /> </div>
                                    </div>
                                    <div className="w-full  mx-2">
                                        <div className="my-2 p-1 bg-white flex border border-gray-200 rounded">
                                            <input 
                                            placeholder="Teléfono" 
                                            name="telefono" 
                                            value={telefono}
                                            onChange={onChange}
                                            className="p-1 px-2 appearance-none outline-none w-full text-gray-800 " /> </div>
                                    </div>
                                    <div className="w-full  mx-2">
                                        <div className="my-2 p-1 bg-white flex border border-gray-200 rounded">
                                            <input 
                                            placeholder="Área o Sector" 
                                            name="area"
                                            value={area}
                                            onChange={onChange}
                                            className="p-1 px-2 appearance-none outline-none w-full text-gray-800 " /> </div>
                                    </div>
                                    <div className="w-full mx-2 flex items-center justify-center">
                                        <button type="button" 
                                        className="text-sm bg-red-500 hover:bg-red-700 text-white py-1 px-2 rounded focus:outline-none focus:shadow-outline">Eliminar</button>
                                    </div>
                                </div>

                            </div>

(см. Знак «плюс» (+)) Изображение кода результат на экране

И я управляю состоянием компонента, чтобы получить значения полей следующим образом:

  // State Inicial
    const [datosContacto, setdatosContacto] = useState({
        nombre: '', 
        email: '', 
        telefono: '', 
        area: ''
    });

    const {nombre, email, telefono, area} = datosContacto;

    const onChange = (e) => {

        setdatosContacto({
            ...datosContacto,
            [e.target.name]: e.target.value
        }
        )
    }

Как я могу создать эти поля снова (и бесконечно) нажатием кнопки «+»?

При нажатии кнопки «удалить» у вас должна быть ссылка на удаление полей (не только значения, но и сами поля, «код html») .

А также мне нужна ссылка на «имя» каждого входа для обработки состояния с помощью setState, но я понятия не имею, как это сделать динамически.

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...