Создайте пользовательскую кнопку для загрузки файлов с помощью formik в react

#javascript #reactjs #formik

Вопрос:

Я хочу создать пользовательский button интерфейс, в котором я могу загружать файл при нажатии. Я создал a form с одним input полем и a button и попытался изменить onchange свойство, но я не могу найти способ здесь. Любая помощь по этому вопросу высоко ценится.

Что я пытался сделать здесь, так это использовать button для управления onChange свойством, чтобы я мог загружать файлы.

 import "./styles.css";
import React from "react";
import { Formik } from "formik";
import { Container, Row, Col, Input, Button } from "reactstrap";

export default function App() {
  const hiddenFileInput = React.useRef(null);

  const handleClick = (event) => {
    if (hiddenFileInput amp;amp; hiddenFileInput.current) {
      hiddenFileInput.current.click();
    }
  };

  // const handleChange = (e, formProps) => {
  //   formProps.setFieldValue("photo1", e.target.files[0]);
  // };

  return (
    <div className="App">
      <Container>
        <Row>
          <Col>
            <Formik
              initialValues={{ photo1: "" }}
              onSubmit={(values) => {
                console.log(values);
              }}
            >
              {(formProps) => (
                <form onSubmit={formProps.handleSubmit}>
                  <Input
                    type="file"
                    innerRef={hiddenFileInput}
                    name="photo1"
                    // onChange={handleChange}
                    onChange={(event) => {
                      formProps.setFieldValue("photo1", event.target.files[0]);
                    }}
                    hidden
                  />
                  <Button type="submit" onClick={handleClick}>
                    submit
                  </Button>
                </form>
              )}
            </Formik>
          </Col>
        </Row>
      </Container>
    </div>
  );
}