【问题标题】:I want to make mui textfield with array我想用数组制作 mui 文本字段
【发布时间】:2022-07-13 16:16:06
【问题描述】:

我的任务是我根据数组使用 TextFiled 但问题无法动态更改所有值我知道我可以根据三元条件使用此任务的索引。


const TextField = () => {
  
  return (
    <>
      <Card sx={{ mt: 4 }} variant="outlined">
        <CardContent>
          <Grid container spacing={{ xs: 2, md: 3 }}>
            {Array.fill("").map((data, index) => (
              <Grid item xs={12} sm={6} md={3} key={index}>
                 <TextField
                  id="outlined-basic"
                  label={data}
                  name={index === 0}
                  size="small"
                  variant="outlined"
                  value={data}
                />
              </Grid>
            ))}
          </Grid>
        </CardContent>
      </Card>
    </>
  );
};

【问题讨论】:

    标签: javascript reactjs material-ui


    【解决方案1】:

      return (
        <>
          <Card sx={{ mt: 4 }} variant="outlined">
            <CardContent>
              <Grid container spacing={{ xs: 2, md: 3 }}>
                {Array.from([
                  "organisationName",
                  "organisationID",
                  "manager",
                  "branch",
                  "product"
                ]).map((data, index) => (
                  <Grid item xs={12} sm={6} md={3} key={index}>
                    <TextField
                      id="outlined-basic"
                      label={data}
                      name="organisationName"
                      size="small"
                      variant="outlined"
                      value={teamForm.values.data}
                      onBlur={teamForm.handleBlur}
                      onChange={teamForm.handleChange.bind(this)}
                      error={Boolean(teamForm.errors.data)}
                      helperText={teamForm.errors.data}
                    />
                  </Grid>
                ))}
              </Grid>
            </CardContent>
            <CardActions>
              <Box
                display="flex"
                flexGrow={1}
                alignItems="center"
                justifyContent="flex-end"
                flexDirection="row"
              >
                <Button
                  variant="contained"
                  color="primary"
                  onClick={teamForm.handleSubmit}
                >
                  Add team
                </Button>
              </Box>
            </CardActions>
          </Card>
        </>
      )

    【讨论】:

      【解决方案2】:

      import React from "react";
      import {
        Grid,
        Card,
        CardContent,
        Box,
        CardActions,
        TextField,
        Button
      } from "@mui/material";
      import { useFormik } from "formik";
      import * as Yup from "yup";
      
      const validationSchema = Yup.object().shape({
        organisationName: Yup.string().required("Required!"),
        organisationID: Yup.string().required("Required!"),
        manager: Yup.string().required("Required!")
      });
      
      const AddNewTeam = () => {
        const teamForm = useFormik({
          initialValues: {
            organisationName: "",
            organisationID: "",
            manager: "",
            branch: "",
            product: ""
          },
          validationSchema,
          onSubmit: (values) => {
            alert(JSON.stringify(values, null, 2));
          }
        });
        console.log(teamForm);
        return (
          <>
            <Card sx={{ mt: 4 }} variant="outlined">
              <CardContent>
                <Grid container spacing={{ xs: 2, md: 3 }}>
                  {Array.from([
                    "organisationName",
                    "organisationID",
                    "manager",
                    "branch",
                    "product"
                  ]).map((data, index) => (
                    <Grid item xs={12} sm={6} md={3} key={index}>
                      <TextField
                        id="outlined-basic"
                        label={data}
                        name="organisationName"
                        size="small"
                        variant="outlined"
                        value={teamForm.values.data}
                        onBlur={teamForm.handleBlur}
                        onChange={teamForm.handleChange.bind(this)}
                        error={Boolean(teamForm.errors.data)}
                        helperText={teamForm.errors.data}
                      />
                    </Grid>
                  ))}
                </Grid>
              </CardContent>
              <CardActions>
                <Box
                  display="flex"
                  flexGrow={1}
                  alignItems="center"
                  justifyContent="flex-end"
                  flexDirection="row"
                >
                  <Button
                    variant="contained"
                    color="primary"
                    onClick={teamForm.handleSubmit}
                  >
                    Add team
                  </Button>
                </Box>
              </CardActions>
            </Card>
          </>
        );
      };
      
      export default AddNewTeam;

      【讨论】:

      • 这是我在代码沙箱链接中添加的相同代码,您更改的内容让我知道我无法看到任何玩具更改
      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      • 我更改了初始值并看到了这个值={teamForm.values.data} error={Boolean(teamForm.errors.data)} helperText={teamForm.errors.data} 这对我有用.
      • 但这不能正常工作
      • 因为label不能和value name level一样可以这样Organization Name
      猜你喜欢
      • 1970-01-01
      • 2022-12-18
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 2022-07-29
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多