我正在尝试使用 React-cropper 但我有问题。所以想法是我想获取图像然后裁剪两次,所以我使用 switch 来改变阶段,在第一阶段我拍摄原始图片,裁剪它并将 setState 设置为 big_logo,然后我想移动到阶段 3 并再次拍摄原始图片,裁剪它并将状态设置为 small_logo。问题是它从来没有看到小标志,该功能甚至没有启动,也不知道为什么。
onCropSaveBig(param) {
const croppedBigLogo = this.refs.cropper.getCroppedCanvas({width: 60, height: 60}).toDataURL();
this.setState({ big_logo: croppedBigLogo });
}
onCropSaveSmall(param) {
console.log("works");
const croppedSmallLogo = this.refs.cropper.getCroppedCanvas({width: 100, height: 25}).toDataURL();
this.setState({ small_logo: croppedSmallLogo });
console.log(this.state);
}
render() {
let panel;
switch (this.state.phase) {
case 1:
panel = (
<>
<h2>Upload logo</h2>
{DropFile(this.onDrop)}
<h2>Logo Library</h2>
{LogoLibrary(tests)}
</>
);
break;
case 2:
panel = (
<>
<h2>Customize logo</h2>
<Cropper
ref="cropper"
crop={e => this.onCropSaveBig(e)}
src={this.state.logo}
aspectRatio={1}
style={{ height: 450 }}
/>
<button
className="btn btn-success"
onClick={() => this.setState({ phase: 3 })}
>
Save and continue
</button>
<button
className="btn btn-failed"
onClick={() => this.setState({ phase: 1 })}
>
Cancel
</button>
</>
);
break;
case 3:
panel = (
<>
<h2>Customize logo</h2>
<Cropper
ref="cropper"
crop={e => this.onCropSaveSmall(e)}
src={this.state.logo}
aspectRatio={4 / 1}
style={{ height: 450 }}
/>
<button
className="btn btn-success"
>
Save
</button>
<button
className="btn btn-failed"
onClick={() => this.setState({ phase: 3 })}
>
Cancel
</button>
</>
);
break;
}
return <div id="right_container">{panel}</div>;
}