Reactjs 使用类组件的react挂钩将onCancel转换为功能组件

Reactjs 使用类组件的react挂钩将onCancel转换为功能组件,reactjs,react-hooks,Reactjs,React Hooks,我正在使用React钩子将类组件转换为功能组件,出于某种原因,我的onCancel错误与解析错误:意外标记,预期“,” 我不确定转换是否正确 之前 class ClosedCaptions extends Component { constructor(props) { super(props); this.state = { isOpen: props.isOpen, }; this.handleClick = this.handleCl

我正在使用React钩子将类组件转换为功能组件,出于某种原因,我的
onCancel
错误与
解析错误:意外标记,预期“,”

我不确定转换是否正确

之前

    class ClosedCaptions extends Component {
  constructor(props) {
    super(props);
    this.state = {
      isOpen: props.isOpen,
    };
    this.handleClick = this.handleClick.bind(this);
    this.onCancel = this.onCancel.bind(this);
  }

  componentDidMount() {
    const { fetchClosedCaption, fetchPersona } = this.props;
    fetchClosedCaption();
    fetchPersona();
  }

  componentDidUpdate(prevProps) {
    if (prevProps.isUpdatingPersona !== this.props.isUpdatingPersona && this.props.isUpdatingPersona) {
      this.setState({
        isOpen: false,
      });
    }
  }

  onCancel() {
    this.setState({
      isOpen: false,
    });
    this.props.restoreToSaved();
  }

  handleClick() {
    this.setState({
      isOpen: true,
    });
  }
之后

 const ClosedCaptions = ({ isOpen, fetchClosedCaption, fetchPersona, restoreDefault }) => {
  const { t } = useTranslate();
  const [newIsOpen, setIsOpen] = useState(isOpen);

  useEffect(() => {
    fetchClosedCaption();
    fetchPersona();
  }, [])

  useEffect(() => {
    if (isUpdatingPersona !== isUpdatingPersona && isUpdatingPersona) {
      setIsOpen(false);
    }
  }

  const onCancel = () => {
    setIsOpen(false);
    restoreToSaved();
  }

  const handleClick = () => {
    setIsOpen(true);
  }
useffect(()=>{
if(isUpdatePersona!==isUpdatePersona&&isUpdatePersona){
setIsOpen(假);
}
}
缺少
,[IsUpdatengPersona])
,下一行的
常量将触发您的
意外令牌
错误。为了澄清,应将其写为:

useffect(()=>{
if(isUpdatePersona!==isUpdatePersona&&isUpdatePersona){
setIsOpen(假);
}
},[IsUpdatengPersona])
使用上面而不是下面声明的
isupdateingpersona
,以便作为效果的依赖项引用


正常情况下,我会以“不可复制或由键入错误导致”结束此问题,但由于我已投票以“需要调试详细信息”结束,并随后撤回,因此我无法投票结束此问题。

restoreToSaved
是来自props的fn,请对其进行分解或将整个props对象传递给您的组件。虽然这不是错误的原因。错误指向哪一行?嗨,我更新了代码。。。希望这已经足够了?IsUpdatengPersona并没有丢失,它是一个常量。我只是没有添加它,因为这不是问题所在。有很多代码,我试图避免复制粘贴整个内容。@HelloL我不是说变量丢失了。我是说函数调用
useffect()
的右括号缺失,第二个参数是依赖项列表。您还应该养成将局部变量声明在其用法之上而不是之下的习惯,因为需要将
isupdateingpersona
指定为此效果的依赖项才能正确。啊,好的,谢谢,这很有意义!