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

返回0使用反应钩子

岳炎彬
2023-03-14

我通常使用getBoundingClientRect()。宽度当开发一个Swiper组件使用反应挂钩,但在一些例子getBoundingClientRect()。宽度返回0。

  useEffect(() => {
    const width = containerWrap.current.getBoundingClientRect().width;
    console.log(containerWrap.current.getBoundingClientRect().width)  // 0
    console.log(document.body.getBoundingClientRect().width);         // 750
    // it works well
    // setTimeout(() => {
    //   console.log(containerWrap.current.getBoundingClientRect().width)  // 750
    // }, 0)
    setSwiperWidth(width);
    if (selectedIndex >= count) {
      active.current = 0;
    }
    setSwipeStyle({...swipeStyle, transform: `translate3d(-${width * (selectedIndex >= count ? 1 : (selectedIndex + 1))}px, 0, 0)`, width: ((count + 2) * width) + 'px'})
    return () => {
      containerWrap.current.remove();
    }
  }, [])

我在useEffect函数中使用了setTimeout,效果很好;

下面是简单的swiper代码演示:

简单swiper演示代码

共有1个答案

阎宝
2023-03-14

在执行完所有DOM突变后,您需要使用useLayout效应来获得布局更改。

参考:https://reactjs.org/docs/hooks-reference.html#uselayouteffect

 类似资料:
  • 我试图在Spring Boot中使用MongoDB反应性模板以反应式方式获得更新结果。 问题是更新部分不会执行,因为我没有订阅它,但我真的不知道如何使用反应性范式执行这两个操作并返回一个值。 这就是我正在尝试的: flatMap updateFirst不会发生,因为我没有订阅,但我需要返回UpdateResult,如果我订阅了,我不知道如何返回该值。

  • 问题内容: 我得到imageView的宽度0。下面是代码。 xml文件: 活动内容: 我不想使用下面的代码,因为我需要将此代码放置在很多地方。 我的解决方法: 实际上,我以后不需要在活动中添加此代码。我将其添加到非活动类中,而不是ImageView的宽度,而是使用了位图图像的宽度,现在没有此问题。 问题答案: 您在哪里打电话并在ImageView上打电话?如果您是在活动中打电话,则无法使用。您需要

  • 问题内容: 我知道有很多标题相同的主题。但是大多数情况是将查询插入了错误的位置。但是我认为我说对了。所以问题是,即使将数据插入数据库,我仍然会得到0。有人知道我可能是错的答案吗? 这是我的代码: 在此先多谢一遍,因为我几乎已经整整一天都为此而努力。(可能有点小而愚蠢) 问题答案: 根据手册 mysql_insert_id返回: 成功执行前一个查询为AUTO_INCREMENT列生成的ID; 如果前

  • 问题内容: 我有这个测试表: 使用这三个插入 并发行 但是查询始终会导致。 PHP ,也没有结果。 我整天都在玩弄,无法正常工作。有想法吗? 问题答案: 问题似乎出在MySQL的phpmyadmin配置文件中,每次发出查询时都会生成新的phpmyadmin配置文件- 因此使其无效。 后续主题中的更多信息每个查询都会创建一个新的CONNECTION_ID() 也感谢dnagirl的帮助

  • 这里我使用的是react hooks状态 在这里,我试图改变来自API的默认值。但是,我不能在改变方法上改变。 谢谢

  • 问题内容: React文档明确指出,有条件地调用钩子是行不通的。从原始的React hooks演示文稿来看 ,原因是因为React使用您调用hook的顺序来注入正确的值。 我理解这一点,但是现在我的问题是,从带有钩子的函数组件中尽早返回是否可以? 那么允许这样的事情吗? 从技术上讲,该挂钩是有条件地调用的,但是在渲染之间它们的调用顺序不会改变(即使有可能会调用更少的挂钩)。 如果不允许这样做,您能