QUESTION:ジャバスクリプト(およびNode.jsの)を使用してFirebaseでの効率的な無限スクロールを実装する方法新しいFirebase(2016)で無限スクロールを実装する方法は?
?
私がチェックWHAT:
Implementing Infinite Scrolling with Firebase?
問題:古いfirebase^
Infinite scroll with AngularJs and Firebase
コードからを: Infinite scroll with AngularJs and Firebase
"まず、Firebaseにインデックスを作成することをお勧めします。この回答のために、私はこの1つを作成します。
{
"rules": {
".read": true,
".write": false,
"messages": {
".indexOn": "id"
}
}
}
それでは、Firebaseでいくつかの魔法を作ってみよう:(jQueryのなし)
// @fb: your Firebase.
// @data: messages, users, products... the dataset you want to do something with.
// @_start: min ID where you want to start fetching your data.
// @_end: max ID where you want to start fetching your data.
// @_n: Step size. In other words, how much data you want to fetch from Firebase.
var fb = new Firebase('https://<YOUR-FIREBASE-APP>.firebaseio.com/');
var data = [];
var _start = 0;
var _end = 9;
var _n = 10;
var getDataset = function() {
fb.orderByChild('id').startAt(_start).endAt(_end).limitToLast(_n).on("child_added", function(dataSnapshot) {
data.push(dataSnapshot.val());
});
_start = _start + _n;
_end = _end + _n;
}
最後に、より良い無限スクロール:
window.addEventListener('scroll', function() {
if (window.scrollY === document.body.scrollHeight - window.innerHeight) {
getDataset();
}
});
私はReactでこのアプローチを使用しています。データがどれほど大きくても速く燃えています。 "
その溶液にJobsamuelによってCT 15時02分で26 '15)
()
PROBLEM
、Nポストはスクロール高さの端部に到達するたびにロードされます画面の
画面サイズによっては、必要以上に多くの投稿がロードされることがあります(画面の高さには2つの投稿のみが含まれているため、必要以上に3つの投稿がロードされます。例えばn = 5のときの画面の高さ)。
つまり、3*NumberOfTimesScrollHeightHasBeenPassed
は、スクロール高さの最後に到達するたびに必要以上の投稿が読み込まれることを意味します。
MY CURRENT CODE(一度にロードするすべての記事、ノー無限スクロール):
var express = require("express");
var router = express.Router();
var firebase = require("firebase");
router.get('/index', function(req, res, next) {
var pageRef = firebase.database().ref("posts/page");
pageRef.once('value', function(snapshot){
var page = [];
global.page_name = "page";
snapshot.forEach(function(childSnapshot){
var key = childSnapshot.key;
var childData = childSnapshot.val();
page.push({
id: key,
title: childData.title,
image: childData.image
});
});
res.render('page/index',{page: page});
});
});
Firebase APIで無限スクロールが容易になるように変更されたものはありません。これは、APIにとって唯一のユースケースです。 –