当前位置: 首页 > 知识库问答 >
问题:

使用useffect刷新表

融宏伟
2023-03-14

我是新来的反应,我有以下问题:use效应是更新无限次,但我只是希望它更新的数据,当我插入一个新的记录,我将不胜感激,如果有人能纠正我。

这是我的代码:

指数js

import {createUser, getUsers} from '../actions';

const Home = () => {
    const [data, setData] = useState([]);

useEffect(() => {
    async function fetchData(){
        const result = await getUsers();
        setData(result);
        console.log("teste: ", result);
    }
    fetchData();
}, [setData]);

const handleCreateUser = (user) => {
    createUser(user).then((users) => {
    });
};

如果我加上第二个参数useffect()=

我做错了什么?创建用户是完美的工作,我只是想在同一时间在表

共有3个答案

周翰
2023-03-14

您可以将依赖数组留空,以便它只运行一次。

希望这能帮助你更好地理解。

   useEffect(() => {
      doSomething()
    }, []) 

空依赖项数组在装载时仅运行一次

useEffect(() => {
  doSomething(value)
}, [value]) 

将值作为依赖项传递.如果依赖项自上次以来已更改,则效果将再次运行。

useEffect(() => {
  doSomething(value)
}) 

没有依赖性。这在每次渲染后都会被调用。

李振国
2023-03-14

看起来您只想获取一次数据(在组件加载时)。如果是这样,只需为依赖项使用一个空数组

useEffect(() => {
    async function fetchData(){
        const result = await getUsers();
        setData(result);
        console.log("teste: ", result);
    }
    fetchData();
}, []);
符风畔
2023-03-14

use效应中,如果没有第二个参数(依赖关系数组),效果将无限期运行。

如果您只希望您的效果仅在创建新用户时运行,您可以创建一个单独的状态,然后将该状态包含到使用效果的依赖项中,例如,将其称为刷新键。我的建议是:

import {createUser, getUsers} from '../actions';

const Home = () => {
    const [data, setData] = useState([]);
    const [refreshKey, setRefreshKey] = useState(0);

useEffect(() => {
    async function fetchData(){
        const result = await getUsers();
        setData(result);
        console.log("teste: ", result);
    }
    fetchData();
}, [refreshKey]);

const handleCreateUser = (user) => {
    createUser(user).then((users) => {
      // Refresh the effect by incrementing 1
      setRefreshKey(oldKey => oldKey +1)
    });
};
 类似资料:
  • 我正在使用useState设置文本输入,我正在使用use效应覆盖后退按钮的行为。 这总是导致记录的文本成为useState的初始值。如果我不使用useEffect,它可以工作,但我不想在每次更改时都设置导航选项。我可以从useEffect中的useState获取当前值,还是需要其他解决方案?

  • 问题内容: 如何定期使用PHP刷新页面?如果我用PHP无法做到这一点,那么最好的推荐方案是什么? 问题答案: 您可以使用PHP来做到这一点: 它会刷新您的当前页面,如果需要将其重定向到另一个页面,请使用以下命令:

  • 问题内容: 如果将新文档索引到Elasticsearch索引,则可在索引操作后1秒钟左右搜索新文档。但是,可以通过调用或对索引进行操作来强制使该文档可立即搜索。这两个操作之间有什么区别- 结果似乎对他们来说是相同的,可以立即搜索文档。 这些操作中的每一项到底是什么? ES文档似乎并未深入解决此问题。 问题答案: 您得到的答案是正确的,但我认为值得详细说明。 刷新有效地调用了Lucene索引读取器上

  • 问题内容: 我有一个包含IFrame和一个Button的网页,一旦按下按钮,我需要刷新IFrame。如果可能的话,这可能吗?我搜索了,找不到任何答案。 问题答案:

  • 问题内容: 这可能是一个简单的问题,但我很困惑,只是不知道从哪里开始。 我有一个PHP脚本(image_feed.php),该脚本返回图像的URL。每次调用此UR1时,它都会返回可用的最新图像(该图像每隔几秒钟更改一次)。 我想发生的是,当页面加载时,有一个对image_feed.php的AJAX调用,该调用返回了最新的URL。然后将该UR1插入HTM1,以替换适当的图像src。 5秒后,我希望重

  • 我是wicket的新手,遇到了AjaxRequestTarget的面板刷新问题。我在下面澄清我的设想。 几次debgus之后,我在其他一些地方发现了我的问题。它不是关于刷新面板B,而是关于刷新面板A。面板A扩展面板,当我用Ajax计时器刷新面板A时,面板A的组件会损坏,因此,我的面板B也会损坏。所以,有人能帮我吗