javascript - 在 react 中使用 formik 创建自定义按钮以上传文件
问题描述
我想创建一个自定义button
,单击时可以在其中上传文件。form
我用一个input
字段和 a创建了abutton
并尝试更改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 && 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>
);
}
解决方案
推荐阅读
- javascript - 角度js中的摄氏到华氏
- spring - 为什么 SecurityContextHolder.getContext() == null?
- c++ - 以字符为单位设置控制台大小
- java - Selenium 打开浏览器但不使用 Java 加载网站
- c# - 从 Timers 更新 Winforms 控件
- c++ - 移动平台不在范围之间停止
- python - Python3 中 os.execvp() 中的任何文件描述符更改?
- unicode - 不同 Unicode 规范化形式的最大字符更改数是多少?
- typo3-9.x - DataHandler TYPO3 9 中的“截断不正确的 DOUBLE 值”错误
- java - Spring Boot 异步休息调用