简体   繁体   English

React hooks 呈现更多 hooks 问题

[英]React hooks render more hooks issue

I have used more than two react hooks together and I get this issue where there is no error with my frontend other than render hooks.我一起使用了两个以上的反应钩子,我遇到了这个问题,除了渲染钩子之外,我的前端没有任何错误。 I don't know how to resolve this error.我不知道如何解决这个错误。 I tried even using useState method.我什至尝试使用useState方法。

If there is a possible fix can you let me know?如果有可能的解决办法,你能告诉我吗?


const Login = () => {
  const { register, handleSubmit, setValue } = useForm();
  const onSubmit = useCallback((formData) => {
    const { email, password } = formData;
    console.log(formData);
  }, []);
  const windowWidth = Dimensions.get("window").width;
  const windowHeight = Dimensions.get("window").height;
  const [loaded] = useFonts({
    Lato: require("../assets/fonts/Lato-Regular.ttf"),
  });

  if (!loaded) {
    return null;
  }

  const onChangeField = useCallback(
    (name) => (text) => {
      setValue(name, text);
    },
    []
  );

  useEffect(() => {
    register("email");
    register("password");
  }, [register]);
  return (
    
  );
};

export default Login;

Your app must call the same number of hooks every render.您的应用必须在每次渲染时调用相同数量的挂钩。 So you need to move所以你需要移动

  if (!loaded) {
    return null;
  }

to be below all of your hooks:低于你所有的钩子:


const Login = () => {
  const { register, handleSubmit, setValue } = useForm();
  const onSubmit = useCallback((formData) => {
    const { email, password } = formData;
    console.log(formData);
  }, []);
  const windowWidth = Dimensions.get("window").width;
  const windowHeight = Dimensions.get("window").height;
  const [loaded] = useFonts({
    Lato: require("../assets/fonts/Lato-Regular.ttf"),
  });
  const onChangeField = useCallback(
    (name) => (text) => {
      setValue(name, text);
    },
    []
  );

  useEffect(() => {
    register("email");
    register("password");
  }, [register]);

  
  if (!loaded) {
    return null;
  }

  return (
    
  );
};

export default Login;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM