找不到GSAP目标未定义

Rom-888

使用useSate时,我可以在两段文本之间切换,从法语到英语。它工作正常,但我想使用GSAP建立更好的过渡。

我的配置无效,因为gsap目标为null或未定义。你能帮我调试那个问题吗?

具有两个按钮的段落组件:

      import React, { useRef, useState } from "react";
import { withRouter } from "react-router-dom";
import gsap from 'gsap';

const LanguageDesc = (props) => {

    const [state, setState] = useState({
        isActive: false,
        languageName: 'English'
    });

    let english = useRef(null);
    let french = useRef(null);

    const handleLanguage = () => {
        if (state.isActive === false) {
            setState({
                isActive: true,
                languageName: 'French'
            })
            gsap.from(english.current, {
                duration: 5,
                opacity: 0,
            })
        } else if (state.isActive === true) {
            setState({
                isActive: false,
                languageName: 'English'
            })
            gsap.from(french.current, {
                duration: 1,
                opacity: 0,
            });
        } else if (state.isActive === false) {
            setState({
                isActive: !state.isActive,
                languageName: 'French'
            })
            gsap.from(english.current, {
                duration: 5,
                opacity: 0,
            })
        }
    };


    return (
        <div>
            {state.isActive ?
                <p ref={english} className="eng-text">{props.state.desc_en}</p>
                : null}
            {state.isActive ?
                null
                : <p ref={french} className="fr-text">{props.state.desc_fr}</p>}
            <button className="btn-language" onClick={handleLanguage} > {state.languageName} text</button>
        </div >
    )

};
export default withRouter(LanguageDesc);

安慰

反t

问题是ref={el => (english = el)}frenchref的用法相同

由ref返回的useRef引用是在组件的整个生命周期中保存在内存中的单个对象的引用。您必须使用该current属性读取和写入引用

分配english的值el不会更改英语ref的值,而是ref替换el然后,您可以访问current元素上属性,属性(由于它不是ref)将始终为undefined

english已经是裁判,因此您无需自己处理任务。只要做ref={english},React就会处理其余的工作。

更新资料

问题仍然存在,因为您的代码在使用ref时仍将其用作元素null

如果isActive为false,则没有english元素。为true时,没有french元素。但是,每个事件处理程序都取决于同时存在的两个元素。

完全删除这些元素会增加为动画输入/输出过渡设置动画的复杂性。也许您可以isActive用来确定是否显示每个p元素(display: none;),但始终同时渲染两个元素

() => {
  const handleLanguage = () => {
    if (isActive) {
      gsap
        .from(french.current, {
          duration: 1,
          opacity: 0,
        })
        .eventCallback('onComplete', () => {
          setState({
            isActive: false,
            languageName: 'English',
          });
        });
    } else {
      gsap
        .from(english.current, {
          duration: 5,
          opacity: 0,
        })
        .eventCallback('onComplete', () => {
          setState({
            isActive: true,
            languageName: 'French',
          });
        });
    }
  };

  return (
    <div>
      <p
        ref={english}
        style={{ display: isActive ? 'none' : 'initial' }}
        className="eng-text"
      >
        {desc_en}
      </p>
      <p
        ref={french}
        style={{ display: isActive ? 'initial' : 'none' }}
        className="fr-text"
      >
        {desc_fr}
      </p>
      <button className="btn-language" onClick={handleLanguage}>
        {' '}
        {state.languageName} text
      </button>
    </div>
  );
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

咕unt声-找不到任务“未定义”

来自分类Dev

找不到AngularJS控制器,未定义

来自分类Dev

找不到未定义错误的属性长度

来自分类Dev

找不到未定义的属性“过滤器”

来自分类Dev

ESLint在模板中找不到未定义的方法或属性

来自分类Dev

找不到未定义的名称和获取器

来自分类Dev

找不到针对Javascript中未定义的修复程序

来自分类Dev

在未定义的索引:id上找不到错误?

来自分类Dev

找不到Javascript / AJAX错误404或未定义

来自分类Dev

如何调试“找不到设计说明-未定义”?

来自分类Dev

找不到未定义错误的属性长度

来自分类Dev

GSAP timelineMax错误,无法读取未定义的属性“重复”

来自分类Dev

NLog找不到自定义目标?

来自分类Dev

Hibernate @ManyToOne“未定义目标实体”

来自分类Dev

Cytoscape事件目标未定义

来自分类Dev

Kendo网格拖放目标未定义

来自分类Dev

目标C继承:未定义的符号

来自分类Dev

Javascript目标属性未定义

来自分类Dev

nil的未定义方法“ destroy”:NilClass找不到我的数据的ID

来自分类Dev

在Rails应用中找不到nil:NilClass的'id'= 1和未定义方法`title'的Article

来自分类Dev

_.pluck在找不到对象时给出未定义值的数组

来自分类Dev

如何修复未定义的偏移量并且找不到名称的验证处理程序

来自分类Dev

返回服务器错误Jade找不到isLoggedIn未定义

来自分类Dev

找不到npm版本-“无法读取未定义的属性'node'”

来自分类Dev

在Safari中未定义获取(ReferenceError:找不到变量:fetch)

来自分类Dev

体系结构x86_64的未定义符号:并且找不到原因

来自分类Dev

未定义参考-链接时为什么在头文件中找不到某些方法?

来自分类Dev

TypeError:无法读取未定义的属性“ map”。找不到解决方案

来自分类Dev

在Ember路线上找不到EmberFire模型数据。错误:加载路线时出错:未定义

Related 相关文章

  1. 1

    咕unt声-找不到任务“未定义”

  2. 2

    找不到AngularJS控制器,未定义

  3. 3

    找不到未定义错误的属性长度

  4. 4

    找不到未定义的属性“过滤器”

  5. 5

    ESLint在模板中找不到未定义的方法或属性

  6. 6

    找不到未定义的名称和获取器

  7. 7

    找不到针对Javascript中未定义的修复程序

  8. 8

    在未定义的索引:id上找不到错误?

  9. 9

    找不到Javascript / AJAX错误404或未定义

  10. 10

    如何调试“找不到设计说明-未定义”?

  11. 11

    找不到未定义错误的属性长度

  12. 12

    GSAP timelineMax错误,无法读取未定义的属性“重复”

  13. 13

    NLog找不到自定义目标?

  14. 14

    Hibernate @ManyToOne“未定义目标实体”

  15. 15

    Cytoscape事件目标未定义

  16. 16

    Kendo网格拖放目标未定义

  17. 17

    目标C继承:未定义的符号

  18. 18

    Javascript目标属性未定义

  19. 19

    nil的未定义方法“ destroy”:NilClass找不到我的数据的ID

  20. 20

    在Rails应用中找不到nil:NilClass的'id'= 1和未定义方法`title'的Article

  21. 21

    _.pluck在找不到对象时给出未定义值的数组

  22. 22

    如何修复未定义的偏移量并且找不到名称的验证处理程序

  23. 23

    返回服务器错误Jade找不到isLoggedIn未定义

  24. 24

    找不到npm版本-“无法读取未定义的属性'node'”

  25. 25

    在Safari中未定义获取(ReferenceError:找不到变量:fetch)

  26. 26

    体系结构x86_64的未定义符号:并且找不到原因

  27. 27

    未定义参考-链接时为什么在头文件中找不到某些方法?

  28. 28

    TypeError:无法读取未定义的属性“ map”。找不到解决方案

  29. 29

    在Ember路线上找不到EmberFire模型数据。错误:加载路线时出错:未定义

热门标签

归档