이것은 전화 한 통을 사용한 후에 효과를 사용하는 좋지 않은 방법입니까?
1579 단어 react
나는
react-cropper
를 사용하여 사용자에게 그림을 올리거나 편집하도록 하고 있지만, 내 photoData
fn에서 컨트롤러 기록 결과setPhotoData
를 시도할 때 컨트롤러 로그가 한 상태 뒤떨어진다.i, e. 만약submit & upload를 누르고 사진 A를 재단하면 setPhotoData
가 실행될 때 컨트롤러에 빈 줄을 기록합니다.그리고 사진 B를 찍을 때 사진 a 데이터의 컨트롤러 로그를 받습니다.사진을 올리면 C는 사진 B의 데이터 등을 기록한다.클래스 구성 요소에서
setState
다음에 리셋을 추가할 수 있습니다.따라서 만약 내가 클래스 구성 요소를 사용한다면, 나는 상태를 설정한 후에 거기에서 만들 것이다. POST
그러나 분명히react 갈고리로는 이 점을 할 수 없다.내 IDE는 나에게 바꾸라고 경고를 주었다. useEffect
그래서 지금 useEffect
에서 photoData
가 제 상태로 채워졌는지 확인하고 채워진 후에 컨트롤러 로그 기록을 합니다.이것은 작은 dev env에 아주 좋습니다:submit을 누르기 전에 어떤 내용도 기록하지 않고, 상태 변경을 통해 트리거된 리셋을 통해 그림을 정확하게 재단하는 컨트롤러 로그를 얻을 수 있습니다.그러나 생산 과정에서 어떤 순환이나 누출이 일어날까 봐 걱정된다.설령 내가 전화를 하기 전에 정의된 상태를 검사한다고 해도, 내가 소홀히 했던 오류가 있을 수 있는 부분이 있습니까?
POST
에서 componentDidMount
해도 이상하게 느껴져서 의심스러워요.다음은 관련 코드입니다.
export const CropperWidget = () => {
const [cropData, setCropData] = useState("");
const [cropper, setCropper] = useState();
const onChange = (e) => {
// there's a fn to upload the file before cropping here
}
const getCropData = () => {
if (typeof cropper !== "undefined") {
setCropData(cropper.getCroppedCanvas().toDataURL());
}
};
useEffect(() => {
if (cropData) {
console.log(cropData);
}
});
return (
// various irrelevant jsx
<button onClick={getCropData}>Crop Image</button>
);
};
Reference
이 문제에 관하여(이것은 전화 한 통을 사용한 후에 효과를 사용하는 좋지 않은 방법입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/crevulus/is-it-bad-practice-to-make-a-post-call-in-useeffect-1cg5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)