두 개의 이미지를 업로드하려고하는데 이미지가 업로드 된 후 이미지를 자르고 잘린 결과를 cropResult 상태에 저장합니다. 나는 또한 이미지의 높이와 너비를 얻으려고 노력하고 있으며이 목적을 위해 더 간단한 논리를 사용하려고 시도했지만 높이와 너비에 대한 상태를 설정하는 동안 다음 오류가 발생합니다.
',' expected.
시작 대괄호
imgObject [img.name
아래는 내 코드입니다
this.state = {
fileName: [],
src:'',
img1Size: {},
img2Size: {},
cropResult: null,
cropResult1: null,
showCroppedImage: false,
showCroppedImage1: false,
}
onChange = (e) => {
e.preventDefault();
let files;
if (e.dataTransfer) {
files = e.dataTransfer.files;
} else if (e.target) {
let today = new Date().getTime() / 1000+e.target.files[0].name;
this.state.fileName.push(today)
files = e.target.files;
}
const reader = new FileReader();
reader.onload = () => {
this.setState({ src: reader.result });
};
reader.readAsDataURL(files[0]);
}
onImgLoad({target:img}) {
let imgObject = {
'cropResult': img1Size,
'cropResult1': img2Size
}
this.setState({imgObject[img.name]: {height:img.offsetHeight, width:img.offsetWidth}}
}
{ this.state.showCroppedImage ?
<div className = "mr-3">
<div className="box cropperRemove mt-2" >
<img className="noImage" src={this.state.cropResult} name="cropResult" onLoad={(e) => this.onImgLoad(e)} />
</div>
</div> :
<><input type="file" data-id="main" name = "mainImg" ref={input => this.inputElement = input} onChange={this.onChange} className="noDisplay" required/>
<img src={noImage} alt="noImage" onClick={() => this.inputElement.click()} className="noImage" /></>
}
{ this.state.showCroppedImage1 ?
<div className = "mr-3">
<div className="box cropperRemove mt-2" >
<img className="noImage" src={this.state.cropResult1} onLoad={this.onImgLoad} name="cropResult1" />
</div>
</div> :
<><input type="file" data-id="second" name = "secImg" ref={input => this.inputElement1 = input} onChange={this.onChange} className="noDisplay" />
<img src={noImage} alt="noImage" onClick={() => this.inputElement1.click()} className="noImage" /> </>
}
위의 코드를 최적화 할 수 있습니까? 나는 그것에 대해 생각했지만 "this.state.showCroppedImage1"이 필수가 아니기 때문에 해결책을 찾을 수 없었습니다.
문제는 setState가 아니라 개체 리터럴에 있습니다. 다음과 같이하십시오.
this.setState({[imgObject[img.name]]: {height:img.offsetHeight, width:img.offsetWidth}})
유일한 변화는 교체하는 것입니다 imgObject[img.name]
함께 [imgObject[img.name]]
.
객체 리터럴에서 동적 속성 이름을 사용하는 방법입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다