首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何让useEffect内部的变量可以从外部访问?

如何让useEffect内部的变量可以从外部访问?
EN

Stack Overflow用户
提问于 2021-09-18 01:58:08
回答 1查看 42关注 0票数 0

我可以访问useEffect内部的isroll变量吗?当按钮被按下时,我想运行滚动。但在我的情况下,它不起作用。我试过做setState,但我在iscroll.on()上遇到了一个新问题,它说“无法读取未定义的属性”,我不知道如何解决这个问题。有没有人能帮我?

代码语言:javascript
运行
AI代码解释
复制
function Arrangement() {
  const ref = useRef(null);

  const [prevButton, setPrevButton] = useState(false);
  const [nextButton, setNextButton] = useState(true);

  useEffect(() => {
    const iscroll = new IScroll(ref.current, { // how to export this variable?
      keyBindings: true,
      scrollX: true,
      mouseWheel: true,
      click: true
    });

    iscroll.on("scrollEnd", () => {
      if (iscroll.x === 0) {
        setPrevButton(false);
      } else {
        setPrevButton(true);
      }

      if (iscroll.x === iscroll.maxScrollX) {
        setNextButton(false);
      } else  {
        setNextButton(true);
      }
    });

    return () => {
      iscroll.destroy();
    }
  }, []);

  const onPrevButtonHandler = () => {
    iscroll.scrollBy(220, 0, 600); // not working
  }

  const onNextButtonHandler = () => {
    iscroll.scrollBy(-220, 0, 600); // not working
  }

  return (
    <div className={classes.Container}>
      <button className={clsx(classes.Button, classes.ButtonLeft, {
        [classes.Button__active]: prevButton
      })} onClick={onPrevButtonHandler} type="button" aria-label="Prev button">
        <ChevronLeft />
      </button>
      <div className={classes.Wrapper} ref={ref}>
        <ul>
          <li></li>
        </ul>
      </div>
      <button className={clsx(classes.Button, classes.ButtonRight, {
        [classes.Button__active]: nextButton
      })} onClick={onNextButtonHandler} type="button" aria-label="Next button">
        <ChevronRight />
      </button>
    </div>
  );
}

export default Arrangement;

我对任何建议都持开放态度。

EN

回答 1

Stack Overflow用户

发布于 2021-09-18 02:04:23

iscroll变量移动到引用或状态。

因此,从ref回调本身初始化它:

代码语言:javascript
运行
AI代码解释
复制
function Arrangement() {
  const iscroll = useRef();
  // OR
  const [iscroll, setIscroll] = useState();

  return (
    <div className={classes.Container}>
      ...
      <div
        ref={(node) => {
          const iscrollInstance = new IScroll(node, {
            keyBindings: true,
            scrollX: true,
            mouseWheel: true,
            click: true,
          });
          iscroll.current = iscrollInstance;
          // OR
          setIscroll(iscrollInstance);
        }}
      >
        ...
      </div>
      ...
    </div>
  );
}

请注意iscroll的用法取决于ref/状态:

代码语言:javascript
运行
AI代码解释
复制
iscroll.current.on("...") // if its a ref
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69233582

复制
相关文章
从模块外部访问内部成员
从模块外部访问内部成员 1.使用exports exports.js: var myMsg='hello'; var funcname = function () { return 'testMsg'; }; exports.msg = myMsg; exports.funcname = funcname; foo.js: var foo = require('./exports.js'); console.log(foo.msg); console.log(foo.funcname());
Dream城堡
2018/10/15
1.2K0
内部类只能访问final的局部变量_java内部类引用外部变量
前不久在学习中意外发现了自己原来忽略的一个小知识点,挺有意思的,现在我来给大家分享一下!
全栈程序员站长
2022/11/18
9560
内部类只能访问final的局部变量_java内部类引用外部变量
Kubernetes(三) 如何从外部访问服务
.example_responsive_1 { width: 200px; height: 50px; } @media(min-width: 290px) { .example_responsive_1 { width: 270px; height: 50px; } } @media(min-width: 370px) { .example_responsive_1 { width: 339px; height: 50px; } } @media(min-width: 500px) { .example_responsive_1 { width: 468px; height: 50px; } } @media(min-width: 720px) { .example_responsive_1 { width: 655px; height: 50px; } } @media(min-width: 800px) { .example_responsive_1 { width: 728px; height: 50px; } } (adsbygoogle = window.adsbygoogle || []).push({});
草堂笺
2019/12/20
2.8K0
java内部类 访问final变量----局部内部类访问局部变量
根据final的知识我们知道final int localvariable = 5;是永远不变的,
wust小吴
2019/07/05
1.1K0
java内部类 访问final变量----局部内部类访问局部变量
【Python】循环语句 ⑥ ( 变量作用域 | for 循环临时变量访问 | 分析在 for 循环外部访问临时变量的问题 | 在 for 循环外部访问临时变量的正确方式 )
如果需要在外部访问 for 循环的临时变量 , 建议将该 临时变量 预定义在 for 循环的外部 , 然后在后续的所有代码中可以访问该 临时变量 ;
韩曙亮
2023/10/11
7650
【Python】循环语句 ⑥ ( 变量作用域 | for 循环临时变量访问 | 分析在 for 循环外部访问临时变量的问题 | 在 for 循环外部访问临时变量的正确方式 )
灵魂拷问:Java内部类是如何访问外部类私有对象的?
blog.csdn.net/qq_33330687/article/details/77915345
好好学java
2021/03/11
2.6K0
灵魂拷问:Java内部类是如何访问外部类私有对象的?
从外部访问Kubernetes中的Pod
本文主要讲解访问kubernetes中的Pod和Serivce的几种方式,包括如下几种:
我的小碗汤
2019/07/30
3K0
从外部设置传入Go变量
前提:必须在build/run时指定 -ldflags="-X main.a=2.0 -X main.b=1" , 且a,b必须是string的变量,不能是常量, 不能是struct.
sunsky
2020/08/19
1.3K0
如何设置nginx可以让ip可以直接访问网站
类似下面这样配置就可以了 server { listen 80; server_name 1.1.1.1; root /web/data; .... } 未经允许不得转载:肥猫博客 » 如何设置nginx可以让ip可以直接访问网站
超级小可爱
2023/02/20
2.2K0
【说站】java中lambda访问外部变量
java中lambda访问外部变量 1、可以在Lambda表达式中访问外部final类型的变量。 // 转换器 @FunctionalInterface interface Converter<F, T> {     T convert(F from); } 2、不同于匿名内部类,不必显式地将num变量声明为final类型。 int num = 1; Converter<Integer, String> stringConverter =         (from) -> String.value
很酷的站长
2022/11/23
1.3K0
【说站】java中lambda访问外部变量
Python内部类调用外部类的变量,并结合with语法使用
        首先,with语法通过一个__enter__()方法和一个__exit__()方法,实现自动在某个命令前后执行特定内容,比如,通过with open()可以实现在with语句结束后自动close文件句柄。反正就是非常方便了,具体用法可行自行搜索,不是本文重点。
小锋学长生活大爆炸
2022/05/09
1.5K0
Python内部类调用外部类的变量,并结合with语法使用
Spring Boot 注入外部配置到应用内部的静态变量
至此,即可在 Spring Boot 全局任意引用 StaticProperties.CUSTOM_NAME
轻量级云原生架构实验室
2018/08/02
8360
通过字符串访问generate模块内部的变量
首先介绍一下generate的用法,generate用于减少verilog的重复语句,批量进行操作。
空白的贝塔
2020/11/26
8320
通过字符串访问generate模块内部的变量
Spring Boot 注入外部配置到应用内部的静态变量
Spring Boot允许你外部化你的配置,这样你就可以在不同的环境中使用相同的应用程序代码,你可以使用properties文件、YAML文件、环境变量和命令行参数来外部化配置,属性值可以通过使用@Value注解直接注入到你的bean中,通过Spring的Environment抽象访问,或者通过@ConfigurationProperties绑定到结构化对象。那么如何进行Spring Boot 注入外部配置到应用内部的静态变量呢?操作如下:
码农小胖哥
2019/12/10
1.2K0
在Java内部类中使用外部类的成员方法以及成员变量
http://blog.csdn.net/zhongyili_sohu/article/details/8975947
用户7886150
2021/04/28
2.9K0
service mesh框架对比_k8s外部访问内部service
在kubernetes中,Pod是应用程序的载体,我们可以通过Pod的IP来访问应用程序,但是Pod的IP地址不是固定的,这就意味着不方便直接采用Pod的IP对服务进行访问。
全栈程序员站长
2022/09/22
8810
service mesh框架对比_k8s外部访问内部service
ios 如何访问私有变量
方式二: 假如我们不知TestObject有哪些属性,所以我们可以利用RunTime获取所有属性
赵哥窟
2018/09/13
2.2K0
Java 匿名内部类中如何使用外部成员
在 Java 8 之前,匿名内部类在使用外部成员的时候,会报错并提示 “Cannot refer to a non-final variable arg inside an inner class defined in a different method”:
二哥聊运营工具
2021/12/17
8570
Java 匿名内部类中如何使用外部成员
【小家java】匿名内部类为什么只能使用外部final的变量
各位都知道,匿名内部类在使用的时候需要使用外部的变量,该变量必须被final修饰,否则编译报错。实际使用中,有时候确实还给我们造成了不少麻烦,可大家可曾想过这是为什么吗?
YourBatman
2019/09/03
9310
【小家java】匿名内部类为什么只能使用外部final的变量
如何在 Docker 容器内部使用外部代理服务器访问HTTP网络资源
在某些情况下,我们可能需要在 Docker 容器内部向外部代理服务器发送请求。例如,当我们需要访问外部网络资源时,我们可能需要通过代理服务器来访问它们。另一个例子是在企业网络中,可能需要使用代理服务器来访问互联网资源。然而,由于 Docker 容器的网络隔离性质,使得容器默认情况下无法直接连接到外部代理服务器。因此,为了让 Docker 容器内部能够通过代理服务器访问外部网络资源,我们需要进行相应的网络配置,包括在容器启动时传递--network host选项来允许容器使用主机网络接口,以及在容器内部设置http_proxy和https_proxy环境变量来配置代理服务器。通过这些配置,Docker 容器就能够顺利地连接到外部代理服务器并访问所需的网络资源。
jackcode
2023/03/22
4K0
如何在 Docker 容器内部使用外部代理服务器访问HTTP网络资源

相似问题

React Functional Component:如何从useEffect()外部访问变量

184

从内部匿名运行访问外部变量

31

从内部函数访问外部函数变量

40

从内部函数访问外部函数的变量

10

如何从函数外部访问函数内部定义变量

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文