English 中文(简体)
正在完成安装工作。
原标题:useEffect hooks are running to completion BEFORE rendering is completed

我完全是astounded,因为我没有能够找到更多关于这个问题的站岗哨。 在反应中,与使用效果有关的一切都表明,它只有在完成和重新招标之后才能运行,但我的hoo子正在对面进行EXACT,这对我感到沮丧。

They are all running to completion before I see anything render on my screen whatsoever which goes against everything useEffect hooks are supposed to do.

所有试图在此做的Im,当页数时,就有一个单一纽芬兰语突出/重点。

在此,我使用效果法的版本被 down倒。

const [loading, setLoading] = useState(true)

useEffect(()=> {

    /* doing a bunch of non-related stuff here. */

    setLoading(false)
    console.log("setLoading to false.")

    
}, [])

useEffect(() => {
    if(loading == false)
    {
        console.log("Loading verified to be false");
        SpatialNavigation.focus(".onboarding-button-welcome") // this highlights the button.
    }
},[loading])

return (
 <button className="onboarding-button-welcome"> Get Started </button>
)

如你所知,<代码>上载的国家变量开始与最初的原样一样,然后由上层代码(>效应改为错误,造成下级<代码>(效应)的火灾,检查装载国变量是假的,然后以纽芬兰语标明。

我的问题(我用一小gger子来检查)是,上述一切都发生在<><><>前>。 我看见我的屏幕上的任何内容。 我看不到任何纽芬兰语,直到所有法典实施之后。

www.un.org/Depts/DGACM/index_french.htm 颜色正在完工,而我所做的事情正在完成,这意味着我的<条码>航天航行.focus()方法没有发现任何纽扣地在OM中集中使用,这意味着没有强调纽伦的页数。 我从不见过我的屏幕上的任何东西,直到我所有使用埃夫德·霍克人都跑过,而且这是一个重大问题。

各地张贴在<条码>上的一切产品 颜色说,这种功能是不可能的,因为它们只是要发射AFTER,使筛选工作已经完成,因此屏幕的内容如此。 和我一样,我感到惊讶的是,我没有看到这一问题在 st流上出现,因为它在React的机能方面产生了一个明显的问题。

我应该指出,我确实有经过尝试和经过证明的方法,通过在<条码>中填入“空间航行”编码(<)这一条线,但我不必这样做。 我只想起 render子和hoo子,以便触发它们。

<><>>><>t>TL;DR<>>>。

我简单的《行为守则》执行令在某种程度上是:

  1. useEffect hooks
  2. Rendering the button

and I want it to be (the way it SHOULD be according to React):

  1. Rendering the button
  2. useEffect hooks
问题回答

使用效果在服完后即刻起作用,但不能保证在服用前完成。 如果你需要与已经提供的内容互动,则使用Ref来确保在OMM中提供。

   import { useEffect, useLayoutEffect, useRef, useState } from  react ;

function MyComponent() {
  const [loading, setLoading] = useState(true);
  const buttonRef = useRef(null);

  useEffect(() => {
    /* doing a bunch of non-related stuff here. */

    setLoading(false);
    console.log("setLoading to false.");
  }, []);

  useLayoutEffect(() => {
    if (!loading && buttonRef.current) {
      console.log("Button element exists in the DOM, focusing...");
      buttonRef.current.focus();
    }
  }, [loading]);

  return (
    <button className="onboarding-button-welcome" ref={buttonRef}>
      Get Started
    </button>
  );
}

在你看到屏幕上出现这种情况,因为反应堆同时使用<条码>。 速度非常快。

www.un.org/Depts/DGACM/index_spanish.htm

除非你实际等待“合成”行动的答复,否则将立即援引<编码>useEffects。

http://www.un.org/Depts/DGACM/index_french.htm 浏览器已经完成了这些突变的筛选(输入页面布局等等)。

我认为,你重新处理一个术语问题——通常使用“放款人”一词,意思是管理你的构成部分,并将由此产生的最新情况应用于OMD,但NOT,包括此后的浏览器工作,重新计算布局和重开屏幕。 ∗∗∗∗∗ React s “rendering” step, but potential before browser的布局和油漆步骤。 (因此,在影响发生之前,你没有看到任何东西。)

(useLayoutEffect is similar to useEffect, except it guarantees that the effect runs synchronously, still after React does its DOM mutations, but finishing before the browser even starts rendering them. This is good if you want to modify the DOM yourself before that happens.)

就大多数目的而言,这是你生效的回击代码进入OM的正确时机。 集中一个领域是一种典型的做法,可在useLayoutEffect(或use Effect)中进行,因为浏览器一旦在OMS内安装了这个元素,就能够理解element.focus(>,即使该元素尚未完成,也可在屏幕上安装。

就某些不同寻常的目的而言,它指出,这样做太快,无法奏效。 如果你刚刚需要一个新交付的元件,那就会被罚款;但是,如果你需要知道新元件的位置/位置/所在地点,在某些情况下,这些新元件在浏览器完成后不会被计算。

我不熟悉“空间航行”,但我猜测,我试图做一些事情,这取决于这种关于新要素的信息——在把新内容放在屏幕上之前就不存在的财产。

如果你实际需要的是“在整整整整整整整整整整整条之后才能适用该守则”,我认为,<代码>准时实际上是正确的。 它将大体击.“一旦浏览器没有更好的工作”,我认为,它保证是你在确保屏幕更新的同时能够操作的守则。

在偶然情况下,你甚至可能比以前更需要。 我亲自讨论这个新内容为iframe的问题,我需要操纵其中的内容。 在此情况下,我实际上不得不等待超过<条码>的截止日期。 我最后引述了<代码>onLoad,iframe,以确保文件内的文件在内部铺设之前完全完成。





相关问题
Rendering 20 large identical listBoxes

I have an HTML table with rows (20 rows). Every row has a listbox of countries (about 250 countries) that are filled using a single dataset from the database. Loading time is quick enough, but ...

SharePoint Web Part: rendering according to user selection

I am writing a SharePoint web part that interacts with a SQL database, allowing users to set a few parameters with some dropdownlists and pull the record for a given customer. I would like for one of ...

Why doesn t Internet Explorer render this page smoothly?

Have a look at this page in IE 8: http://labs.pieterdedecker.be/hetoog/layout.htm It looks okay at first, but try hovering over an item and then taking your mouse off the item grid again. Before ...

Using g.render in a grails service

I m trying to use g.render in a grails service, but it appears that g is not provided to services by default. Is there a way to get the templating engine to render a view in the service? I may be ...

热门标签