Форма текстового поля не отображается внутри приложения React

#reactjs #forms #material-ui #textfield

#reactjs #формы #материал-пользовательский интерфейс #текстовое поле

Вопрос:

Следуя этому руководству: https://www.youtube.com/watch?v=ngc9gnGgUdAamp;t=15s

через 57 минут при попытке заполнить раздел «Форма» я правильно скопировал код, но моя форма не отображается в моем приложении.

вот как это должно выглядеть: правильное отображение

и вот что я получаю: форма не отображается

Я полагаю, что это простая организационная ошибка, поскольку я не выдаю никаких ошибок в консоли.

Я использую фреймворк React «material-ui / core».

В верхней части моего файла при импорте текстовое поле отображается как серое или неиспользуемое, несмотря на то, что оно находится в моем файле.

ниже мой form.js файл:

     import React, { useState } from "react";
import { TextField, Button, Typography, Paper } from "@material-ui/core";
import FileBase from "react-file-base64";
import { useDispatch } from "react-redux";

import useStyles from "./styles";
import { createPost } from "../../actions/posts";

const Form = () => {
  const [postData, setPostData] = useState({
    creator: "",
    title: "",
    message: "",
    tags: "",
    selectedFile: "",
  });
  const classes = useStyles();
  const dispatch = useDispatch();

  const handleSubmit = (e) => {
    e.preventDefault();

    dispatch(createPost(postData));
  };

  const clear = () => {};

  return (
    <Paper className={classes.paper}>
      <form
        autoComplete="off"
        noValidate
        className={`${classes.root} ${classes.form}`}
        onSubmit={handleSubmit}
      >
        <Typography variant="h6">Creating a Memory</Typography>
        <textField
          name="creator"
          variant="outlined"
          label="Creator"
          fullWidth
          value={postData.creator}
          onChange={(e) =>
            setPostData({ ...postData, creator: e.target.value })
          }
        />
        <textField
          name="title"
          variant="outlined"
          label="Title"
          fullWidth
          value={postData.title}
          onChange={(e) => setPostData({ ...postData, title: e.target.value })}
        />
        <textField
          name="message"
          variant="outlined"
          label="Message"
          fullWidth
          value={postData.message}
          onChange={(e) =>
            setPostData({ ...postData, message: e.target.value })
          }
        />
        <textField
          name="tags"
          variant="outlined"
          label="Tags"
          fullWidth
          value={postData.tags}
          onChange={(e) => setPostData({ ...postData, tags: e.target.value })}
        />
        <div className={classes.fileInput}>
          <FileBase
            type="file"
            multiple={false}
            onDone={(base64) =>
              setPostData({ ...postData, selectedFile: base64 })
            }
          />
        </div>
        <Button
          className={classes.buttonSubmit}
          variant="contained"
          color="primary"
          size="large"
          type="submit"
          fullWidth
        >
          Submit
        </Button>
        <Button
          variant="contained"
          color="secondary"
          size="small"
          onClick={clear}
          fullWidth
        >
          Clear
        </Button>
      </form>
    </Paper>
  );
};

export default Form;
 

Я мега новичок, поэтому я очень благодарен за любую помощь или рекомендации.
Если я могу предоставить еще какую-либо полезную информацию, пожалуйста, дайте мне знать!

Ответ №1:

Попробуйте TextField , с большой буквы T .

В react, если вы используете имя тега, начинающееся со строчной буквы, оно будет помещено непосредственно в DOM, вместо того, чтобы рассматривать его как компонент react.

В старой версии вы должны иметь возможность щелкнуть правой кнопкой мыши на своей форме, проверить элемент и просмотреть textField s в вашем HTML.