承接 mrshanebarron/infinite-scroll 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mrshanebarron/infinite-scroll

最新稳定版本:v1.0.4

Composer 安装命令:

composer require mrshanebarron/infinite-scroll

包简介

Infinite scroll component for Laravel - supports Livewire and Vue

README 文档

README

An infinite scrolling component for Laravel applications. Automatically loads more content as user scrolls. Works with Livewire and Vue 3.

Installation

composer require mrshanebarron/infinite-scroll

Livewire Usage

Basic Usage

<livewire:sb-infinite-scroll :loading="$loading" :no-more="$noMore">
    @foreach($items as $item)
        <div class="p-4 border-b">{{ $item->title }}</div>
    @endforeach
</livewire:sb-infinite-scroll>

Livewire Props

Prop Type Default Description
loading boolean false Currently loading
no-more boolean false No more items
threshold number 100 Scroll threshold in px
root-margin string '100px' IntersectionObserver margin

Vue 3 Usage

Setup

import { SbInfiniteScroll } from './vendor/sb-infinite-scroll';
app.component('SbInfiniteScroll', SbInfiniteScroll);

Basic Usage

<template>
  <SbInfiniteScroll
    :loading="loading"
    :no-more="noMore"
    @load-more="loadMore"
  >
    <div v-for="item in items" :key="item.id" class="p-4 border-b">
      {{ item.title }}
    </div>
  </SbInfiniteScroll>
</template>

<script setup>
import { ref } from 'vue';

const items = ref([]);
const loading = ref(false);
const noMore = ref(false);
const page = ref(1);

const loadMore = async () => {
  loading.value = true;

  const response = await fetch(`/api/items?page=${page.value}`);
  const data = await response.json();

  items.value.push(...data.items);
  noMore.value = data.items.length === 0;
  page.value++;
  loading.value = false;
};

// Initial load
loadMore();
</script>

Feed Example

<template>
  <div class="max-w-2xl mx-auto">
    <SbInfiniteScroll
      :loading="loading"
      :no-more="noMore"
      @load-more="loadPosts"
    >
      <article
        v-for="post in posts"
        :key="post.id"
        class="p-6 bg-white rounded-lg shadow mb-4"
      >
        <h2 class="text-xl font-bold">{{ post.title }}</h2>
        <p class="text-gray-600 mt-2">{{ post.excerpt }}</p>
      </article>

      <template #loading>
        <div class="text-center py-4">
          <span class="text-gray-500">Loading more posts...</span>
        </div>
      </template>

      <template #no-more>
        <div class="text-center py-4">
          <span class="text-gray-400">You've reached the end!</span>
        </div>
      </template>
    </SbInfiniteScroll>
  </div>
</template>

Vue Props

Prop Type Default Description
loading Boolean false Loading state
noMore Boolean false No more items to load
threshold Number 100 Scroll threshold
rootMargin String '100px' Observer margin

Events

Event Payload Description
load-more - Triggered when scroll reaches threshold

Slots

Slot Description
default Content items
loading Custom loading indicator
no-more End of list message

Features

  • Intersection Observer: Efficient scroll detection
  • Loading State: Shows spinner while loading
  • End Detection: Displays message when no more items
  • Customizable: Custom loading and end slots
  • Preloading: Configurable load threshold

Styling

Uses Tailwind CSS:

  • Spinner animation
  • Centered loading/end messages
  • Gray text for status

Requirements

  • PHP 8.1+
  • Laravel 10, 11, or 12
  • Tailwind CSS 3.x

License

MIT License

统计信息

  • 总下载量: 13
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-14

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固