javascript - 使用 Ionic React 添加滚动按钮

标签 javascript reactjs ionic-framework scroll ionic4

我正在尝试使用 Ionic React 添加一个滚动到页面顶部的按钮。 到目前为止,这是我的代码的一部分 -

...
function scrollToTop() {
    return document.getElementById("page")!.scrollTop;
}

const Home: React.FC = () => {
  return (
    <IonPage>
      <IonHeader>
        <IonToolbar>
            <IonButtons slot="start">
                <IonMenuButton />
            </IonButtons>
            <IonTitle slot="end">Ionic Template - JB</IonTitle>
        </IonToolbar>
      </IonHeader>
      <IonContent id={"page"}>
        <IonCard  className="welcomeImage">
            <img src="/assets/welcomeBacking.jpg" alt=""/>
            <IonCardHeader>
                <IonCardTitle>Welcome!</IonCardTitle>
                <IonCardSubtitle>To this Ionic Template</IonCardSubtitle>
            </IonCardHeader>
            <IonCardContent>
                Lorem ipsum........
            </IonCardContent>
        </IonCard>
        {/*Checklist*/}
        <IonList>
            {form.map(({val, isChecked, isDisabled}) => (
                <IonItem key={val}>
                    <IonLabel>{val}</IonLabel>
                    <IonCheckbox slot={"start"} value={val} checked={isChecked} disabled={isDisabled} />
                </IonItem>
                ))}
        </IonList>
          <IonButton onClick={scrollToTop}>Scroll to top</IonButton>
      </IonContent>
    </IonPage>
  );
};

scrollToTop 函数应该滚动到 ID 为“page”的元素的顶部,但事实并非如此。单击按钮时我没有收到任何错误,而是什么也没有发生。

我知道这在 Angular 中实现起来很简单,但我在使用 React 时遇到了问题。任何帮助都会非常感谢。

最佳答案

您可以使用 IonContentscrollToTop 方法来做到这一点,但您必须先启用 scrollEvents。在 ionic react 中,可以使用 refs 访问这些方法。看起来 react 不大,但至少目前有效。

........    
import React, {useRef} from 'react';

const Home: React.FC = (props) => {
    const contentRef = useRef<HTMLIonContentElement | null>(null);
    const scrollToTop= () => {
        contentRef.current && contentRef.current.scrollToTop();
    };
    return (
        .....
        <IonContent ref={contentRef} scrollEvents={true}>
            ................
            <IonButton onClick={()=>scrollToTop()}>Scroll to top</IonButton>
        </IonContent>
        .....
    );
};

关于javascript - 使用 Ionic React 添加滚动按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58730178/

相关文章:

javascript - 使用 div 将标题固定在适当的位置

javascript - SpeechSynthesisUtterance 语音文本的多个实例

javascript - 根据子对象的特定键值按排序顺序迭代 JavaScript 对象

android-widget - 是否可以使用Ionic Framework或React Native为Android创建主屏幕小部件?

javascript - 委托(delegate)句柄如何在 ionic + angularjs 中工作?

javascript - 使用 chai 断言和实习生测试不会失败

javascript - JSX 代表什么?

reactjs - React 添加动态元素键和值

json - 在 ionic 中迭代 JSON 数组显示所有数据

javascript - 如何在 React 的另一个 return 语句中返回多行 JSX?