In Meteor 1.4 mit React Ich möchte eine verschachtelte Schleife von Rendering-Komponenten, 2 Reihen mit je 6 Elementen.Schleife durch Meteor React Komponenten
Row 1
[unique_item] [unique_item] [unique_item] ...
Row 2
[unique_item] [unique_item] [unique_item] ...
Wie kann ich Zustand in die createContainer
Funktion übergeben, so dass ich den Zähler um die Ergebnisse Paginieren erhöhen kann?
Hier ist der Code:
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import { createContainer } from 'meteor/react-meteor-data';
import { Items } from '../api/items.js';
import Item from './Item.jsx';
import '../../client/stylesheets/main.scss';
class App extends Component {
constructor(props) {
super(props);
this.state = {
skipCount : 0
};
}
renderItemRows(i) {
return (
<div className="container-fluid">
<div className="row">
{ this.renderItems(i) }
</div>
</div>
);
}
renderItems(i) {
// i here has the right value...how do I pass into createContainer?
return this.props.items.map((item) => (
<Item key={item._id} item={item} />
));
}
render() {
let rows = [];
for (let i=0;i<2;i++) {
rows.push(this.renderItemRows(i));
}
return (<div>{rows}</div>);
}
}
App.propTypes = {
items: PropTypes.array.isRequired,
skipCount: PropTypes.number,
};
export default createContainer(() => {
// Hardcoded to 50 just to make sure the data pagination works
const skipCount = 50;
Meteor.subscribe('items', skipCount);
return {
items: Items.find({}, { sort: { item : 1 }, limit : 6 }).fetch(),
};
}, App);
Nachdem auf den Meteor-Foren durch this thread Lesen, createContainer()
als staatenlos Funktion übergeben wird, so gibt es keine Möglichkeit gibt, Informationen wie diese zu übergeben.
Nach diesem Thread, meine nur zwei Optionen:
- eine Wrapper-Komponente erstellen (
ItemRow1.jsx
undItemRow2.jsx
) - einen Parameter an die Funktion veröffentlichen Passing über
Session.get()
Ich habe versucht, Nr. 2, aber es fing an, Session.get Hunderte Male pro Sekunde zu lesen und meine Anwendung zum Stillstand zu bringen.
Nr. 1 wird funktionieren, scheint aber unglaublich repetitiv zu sein, nur um durch eine zweite Reihe von Daten paginieren ... gibt es keinen besseren Weg, dies zu tun?
Ich bin mir nicht sicher, ob ich verstehe, was Sie erreichen wollen. Steht Ihr Problem mit Ihrer 'i' Variablen oder' skipCount' in Verbindung (in Ihrem Code könnten Sie Probleme mit beiden haben)? Möchten Sie eine variable Anzahl von Zeilen dynamisch rendern, oder sind es immer diese 2 gleichzeitig? – Waiski
Ich möchte immer 2 Zeilen mit je 6 Elementen rendern. Der 'skipCount' dient nur dazu, die Ergebnisse zu paginieren, also ist Zeile 1 1-6 und Zeile 2 ist 7-12. – OrdinaryHuman