1 | import React, { useState, Suspense } from "react";
|
2 | import styles from "./index.scss";
|
3 | import getSrcPrefix from "@script/getSrcPrefix";
|
4 | import Cropper from "./_cropper";
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | export default function CropperBox(props) {
|
14 | const { name, onChange, value, ...rest } = props;
|
15 | const [file, setfile] = useState(null);
|
16 |
|
17 | const onInputChange = e => {
|
18 | const file = e.nativeEvent.target.files[0];
|
19 | setfile(file);
|
20 | };
|
21 |
|
22 | return (
|
23 | <div className={styles.container}>
|
24 | <div className={styles.input}>
|
25 | <label className={styles.label}>
|
26 | {name || "选择图片"}
|
27 | <input
|
28 | type="file"
|
29 | onChange={onInputChange}
|
30 | style={{ display: "none" }}
|
31 | />
|
32 | </label>
|
33 | </div>
|
34 | <img
|
35 | src={getSrcPrefix(value)}
|
36 | className={styles.img}
|
37 | width="100%"
|
38 | style={{ maxWidth: props.width + "px" }}
|
39 | />
|
40 | <Suspense fallback={null}>
|
41 | <Cropper file={file} onSubmit={onChange} width={500} {...rest} />
|
42 | </Suspense>
|
43 | </div>
|
44 | );
|
45 | }
|