Utilisez ReactJS TypeScript MUI, utilisez useState pour définir la valeur de TextField et ajoutez la fonction d'événement onchange pour TextField
P粉212114661
P粉212114661 2023-08-28 21:44:31
0
1
562
<p>Je suis un débutant en développement avec ReactJS et MUI et j'ai un formulaire de champ ReactJS TypeScript avec MuiText. Vous souhaitez pouvoir utiliser la méthode <code>useState</code> pour modifier la valeur d’un champ de texte. </p> <p>Ajoutez également la fonction <code>onchnage</code>Je peux ajouter la fonction onchange pour le champ de texte normal, mais je ne sais pas comment l'ajouter pour le champ de texte MUI ?</p> <pre class="brush:php;toolbar:false;">import * as React from 'react'; importer { useState } depuis "react" importer le bouton depuis '@mui/material/Button' ; importer CssBaseline depuis '@mui/material/CssBaseline' ; importer TextField depuis '@mui/material/TextField' ; importer la grille depuis '@mui/material/Grid' ; importer la boîte depuis '@mui/material/Box' ; importer un conteneur depuis '@mui/material/Container' ; importer { createTheme, ThemeProvider } depuis '@mui/material/styles' ; importer { useForm, SubmitHandler, Controller } depuis 'react-hook-form' ; importer * comme ouais à partir de « ouais » ; importer { yupResolver } depuis '@hookform/resolvers/yup' ; interface IFormInputs { chemin du fichier : chaîne ; } schéma const = ouais.object().shape({ chemin du fichier : yup.string().min(4).required(), }); const thème = createTheme(); fonction d'exportation par défaut MuiTextField() { const { contrôle, handleEnvoyer, formState : {erreurs}, } = useForm<IFormInputs>({ résolveur : yupResolver (schéma), }); const [chemin du fichier, setFilepath] = useState("vodeo.mp3"); const onSubmit : SubmitHandler<IFormInputs> = (données) => { console.log('données soumises : ', données); console.log('chemin du fichier : ', data.chemin du fichier); } ; retour ( <ThemeProvider theme={theme}> <Composant conteneur="principal" maxWidth="lg"> <CssBaseline /> <Boîte sx={{ marginTop : 8, affichage : 'flex', flexDirection : 'colonne', alignItems : 'centre', }} > <form onSubmit={handleSubmit(onSubmit)}> <Boîte sx={{ mt: 3 }}> <Espacement des conteneurs de grille={2}> <Élément de grille xs={16} sm={6}> <Contrôleur name="chemin du fichier" contrôle={contrôle} valeur par défaut="" render={({ champ }) => ( <Champ de texte {...champ} label="Chemin du fichier" erreur={!!erreurs.filepath} helperText={erreurs.filepath ? erreurs.chemin de fichier?.message : ''}autoComplete="chemin-fichier" pleine largeur /> )} /> </Grille> <Bouton type="soumettre" variante = "contenu" sx={{ mt : 3, mo : 2 }} > Soumettre </Bouton> </Grille> ≪/Boîte> </formulaire> ≪/Boîte> </Conteneur> </ThemeProvider> ); }</pré> <p>Mise à jour : Voici le lien de partage de code : https://codesandbox.io/s/boring-water-m47uxn?file=/src/App.tsx</p> <p>Lorsque nous modifions la valeur de la zone de texte en <code>auto</code>, nous souhaitons modifier la valeur de la zone de texte en <code>audio.mp3</code>, mais ce n'est pas le cas. ça ne marche pas. </p>
P粉212114661
P粉212114661

répondre à tous(1)
P粉969666670

MUI Textfield a également onChange :

<TextField
     error={Boolean(touched.name && errors.name)}
     fullWidth
     label={t('Name')}
     name="name"
     onBlur={handleBlur}
     onChange={handleChange}
     value={values.name}
     variant="outlined"
     autoComplete="off"
/>

Le « champ » dans la fonction de rendu contient onChange. L'état du formulaire est enregistré dans useForm. Dans les accessoires de useForm, vous devez ajouter des valeurs par défaut. Vous ne transmettez pas prop type="file", c'est peut-être votre problème.

Guide pour créer une entrée de fichier à l'aide du formulaire de hook de réaction : https://refine.dev/blog/how-to-multipart-file-upload-with-react-hook-form/

API Textfield : https://mui.com/material-ui/api/text-field/

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal