Maison  >  Questions et réponses  >  le corps du texte

Utilisez ReactJS TypeScript MUI, utilisez useState pour définir la valeur de TextField et ajoutez la fonction d'événement onchange pour TextField

<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粉212114661P粉212114661440 Il y a quelques jours466

répondre à tous(1)je répondrai

  • P粉969666670

    P粉9696666702023-08-29 19:47:05

    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/

    répondre
    0
  • Annulerrépondre