Diseñé una tarjeta flash y quiero cambiar el texto de la tarjeta cuando hago clic en el botón, pero no sé cómo enviar la información del formulario al componente de la aplicación para actualizar el estado. componente de la aplicación
function App() { const [flashCard, setFlashCard] = useState({ word: "test", persianEquivalent: "test", }); const setFlashCardHandler = (e) => { setFlashCard({ flashCard: e }); }; return ( <div className="container"> <Form setFlashCard={setFlashCardHandler} /> <FlashCard flashCard={flashCard} /> </div> ); } export default App;Componente de formulario:
function Form({ setFlashCard }) { const [valueEn, setValueEn] = useState(); const [valuePer, setValuePer] = useState(); const setValueHandlerEn = (e) => { setValueEn(e.target.value); }; const setValueHandlerPer = (e) => { setValuePer(e.target.value); }; const setFlashCardHandler = (e) => { e.preventDefault(); setFlashCard((e)=>{valueEn=e.target[0].value}); }; return ( <form onSubmit={setFlashCardHandler}> <input id="word-input" placeholder="world" value={valueEn} onChange={setValueHandlerEn} /> <input id="persian-equivalent-input" placeholder="Equivalent" value={valuePer} onChange={setValueHandlerPer} /> <button id="submit-btn">send</button> </form> ); } export default Form;Hay un problema con la forma de establecer los valores.
setFlashCard como accesorio a Form <Form setFlashCard={setFlashCard} />setFlashCardHandler como se muestra a continuación. const setFlashCardHandler = (e) => { e.preventDefault(); setFlashCard({ word: valueEn, persianEquivalent: valuePer }); };"" ) como estado predeterminado para evitar enviar undefined . const [valueEn, setValueEn] = useState(""); const [valuePer, setValuePer] = useState("");Agregue nuevos accesorios updateFlashCard al componente.
Me gusta:
<Form updateFlashCard={(e) => setFlashCard(e)}/> Y cambie el valor en el estado updateFlashCard del componente de formulario
Me gusta:
function Form({ updateFlashCard }) { const [valueEn, setValueEn] = useState(); const [valuePer, setValuePer] = useState(); const setValueHandlerEn = (e) => { setValueEn(e.target.value); }; const setValueHandlerPer = (e) => { setValuePer(e.target.value); }; const setFlashCardHandler = (e) => { e.preventDefault(); updateFlashCard(e.target[0].value) // update from here }; return ( <form onSubmit={setFlashCardHandler}> <input id="word-input" placeholder="world" value={valueEn} onChange={setValueHandlerEn} /> <input id="persian-equivalent-input" placeholder="Equivalent" value={valuePer} onChange={setValueHandlerPer} /> <button id="submit-btn">send</button> </form> ); } export default Form;