Ich habe die React-Cropper- Dokumentation zu Github studiert und versucht, sie anzuwenden.
Das Problem ist - ich kann die Cropper-Instanz nicht initialisieren. Gemäß der Dokumentation müssen wir die Methode onInitialized verwenden. Ich habe das getan, aber ich kann es nicht abfeuern.
Wann sollte ich davon ausgehen, dass es ausgelöst werden soll - Wenn eine Komponente bereitgestellt wird oder wenn ich ein Image hinzufüge? Die Dokumentation ist super verschwommen. Unten ist mein Code. Es scheint, als ob die onCropperInit
Funktion nie ausgelöst wurde.
import React from 'react';
import Cropper from 'react-cropper';
export default class Demo extends React.Component{
constructor(){
super();
this.state={
image: "#"
}
this._crop = this._crop.bind(this);
this.onCropperInit = this.onCropperInit.bind(this);
this.onChange = this.onChange.bind(this)
}
onChange(e) {
e.preventDefault();
let files;
files = e.target.files;
const reader = new FileReader();
reader.onload = () => {
this.setState({
image: reader.result
})
};
reader.readAsDataURL(files[0]);
};
_crop(){
}
onCropperInit(cropper){
console.log("cropper")
this.cropper = cropper;
}
render(){
return (
<div>
<input type="file" onChange={this.onChange} />
<Cropper src={this.state.image} style={{height:"100vh",width: "90vw"}} aspectRatio={1067/600} guides={true} crop={this._crop} onInitialized={this.onCropperInit} dragMode="move"/>
</div>
)
}
}
Du hast recht. Die Github-Dokumentation sagt zu verwenden onInitialized
, aber es scheint nicht zu funktionieren.
Zumindest für ref
den Moment können Sie a verwenden , um die Cropper-Instanz wie folgt abzurufen:
const cropper = React.createRef(null);
class Demo extends React.Component {
constructor(props) {
super(props);
this._crop.bind(this);
}
_crop() {
console.warn(cropper.current.cropper.getCroppedCanvas());
}
render() {
return (
<Cropper
src="http://fengyuanchen.github.io/cropper/images/picture.jpg"
style={{ height: 400, width: '100%' }}
initialAspectRatio={16 / 9}
guides={false}
crop={this._crop}
ref={cropper}
/>
);
}
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen