javascript - React hooks 的使用效果

标签 javascript reactjs react-hooks

我的应用程序遇到问题,当我单击新按钮功能时,它会重新呈现新笑话两次。这是我的代码:

    import React, { useState, useEffect } from "react";
import { Typography, Button } from "@material-ui/core";

import Navigation from "../Navigation";
export default function RandomJoke() {
  const [isLoaded, setLoaded] = useState(false);
  const [jokeData, setJokeData] = useState({});
  const [loadNewJoke, setLoadNewJoke] = useState(false);

  function useFetch() {
    async function fetchMyAPI() {
      let response = await fetch("https://icanhazdadjoke.com/slack");
      response = await response.json();
      setJokeData(response);
      setLoaded(true);
    }

    useEffect(() => {
      fetchMyAPI();
      if (loadNewJoke) setLoadNewJoke(false);
    }, [loadNewJoke]);
  }
  useFetch();

  function reloadJoke() {
    setLoaded(false);
    setLoadNewJoke(true);
  }

  return (
    <>
      <Navigation mainpage="RandomJoke" />

      <Typography variant="h6">Random Dad Joke</Typography>
      {isLoaded && <div>{jokeData.attachments[0].text}</div>}
      {!isLoaded && <div>loading...</div>}
      {isLoaded && (
        <Button variant="contained" onClick={() => reloadJoke()}>
          New one
        </Button>
      )}
    </>
  );
}

我尝试添加一个 newjoke 状态 Hook ,但仍然无法解决。谢谢

最佳答案

只要 loadNewJoke 的值发生变化,useEffect 就会触发,对吧?不仅仅是当 loadNewJoke 设置为 true 时。仔细查看按下按钮后进行的调用,以及调用 setLoadNewJoke 的次数。

关于javascript - React hooks 的使用效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60383475/

相关文章:

javascript - 我怎样才能以更有效的方式减少它

javascript - 从一台nodejs服务器到同一服务器中的另一台nodejs服务器调用函数

javascript - 使用 Connect 上传文件

javascript - react : State is not up-to-date when I unmount component

javascript - 如何将 graphQL 查询转换为 React 组件?

javascript - ReactJS,Hooks - 如何在 .map() 函数之后设置状态?

Javascript私有(private)变量+Object.create(引用闭包变量)

css - react /CSS : Using CSS stylesheets in a React app?

javascript - 程序包未在 xxx :yy React Native 处运行

javascript - return 中的样式标签 ()