使用 Next.js 13 和 TypeScript 添加一个返回网页顶部的按钮

本文将介绍如何使用 Next.js 13 和 TypeScript 自行实现一个返回顶部按钮的功能,无需依赖任何第三方库。

1. 创建 TopButton 组件

首先,在项目中创建一个新的组件 TopButton.tsx,用于渲染返回顶部按钮:

import { useState } from 'react';

const TopButton = () => {
  const [showButton, setShowButton] = useState(false);

  const handleClick = () => {
    window.scrollTo({ top: 0, behavior: 'smooth' });
  };

  return (
    <button
      className={`top-button ${showButton ? 'show' : ''}`}
      onClick={handleClick}
    >
      返回顶部
    </button>
  );
};

export default TopButton;

2. 控制按钮显示

TopButton 组件中,使用 useState 钩子来控制返回顶部按钮的显隐状态。当页面滚动到一定位置时,显示返回顶部按钮;否则隐藏返回顶部按钮。

import { useState, useEffect } from 'react';

const TopButton = () => {
  const [showButton, setShowButton] = useState(false);

  const handleClick = () => {
    window.scrollTo({ top: 0, behavior: 'smooth' });
  };

  useEffect(() => {
    const handleScroll = () => {
      if (window.pageYOffset > 300) {
        setShowButton(true);
      } else {
        setShowButton(false);
      }
    };

    window.addEventListener('scroll', handleScroll);

    return () => window.removeEventListener('scroll', handleScroll);
  }, []);

  return (
    <button
      className={`top-button ${showButton ? 'show' : ''}`}
      onClick={handleClick}
    >
      返回顶部
    </button>
  );
};

export default TopButton;

3. 在页面中使用 TopButton 组件

在页面中引入 TopButton 组件,并在需要返回顶部的位置添加该组件。

import TopButton from '../components/TopButton';

const Home = () => {
  return (
    <div>
      <h1>欢迎来到首页</h1>
      <p>这是一个 Next.js 13 和 TypeScript 的示例项目。</p>
      <p>请往下滚动页面,查看返回顶部按钮的效果。</p>
      <div style={{ height: '2000px' }}></div>
      <TopButton />
    </div>
  );
};

export default Home;

4. 添加 CSS 样式

在 CSS 中添加样式,用于控制返回顶部按钮的显隐状态和位置。

.top-button {
  position: fixed;
  bottom: 30px;
  right: 30px;
  display: none;
  width: 100px;
  height: 40px;
  background-color: #333;
  color: #fff;
  border: none;
  outline: none;
  cursor: pointer;
  transition: opacity 0.2s ease-in-out;
}

.top-button.show {
  display: block;
  opacity: 1;
}

5. 运行项目

运行项目,查看返回顶部按钮的效果。

Next.js 13 & TypeScript: 自行实现返回顶部按钮

原文地址: https://www.cveoy.top/t/topic/mBlB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录