이것은 전화 한 통을 사용한 후에 효과를 사용하는 좋지 않은 방법입니까?

1579 단어 react
안녕하세요.
나는 react-cropper를 사용하여 사용자에게 그림을 올리거나 편집하도록 하고 있지만, 내 photoDatafn에서 컨트롤러 기록 결과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>
  );
};

좋은 웹페이지 즐겨찾기