循环通过Meteor React组件

时间:2016-12-02 03:02:28

标签: reactjs meteor

在带有React的Meteor 1.4中我想做一个渲染组件的嵌套循环,每行2个,每个6行。

Row 1
[unique_item] [unique_item] [unique_item] ...
Row 2
[unique_item] [unique_item] [unique_item] ...

如何将状态传递给createContainer函数,以便我可以递增计数器以对结果进行分页?

以下是代码:

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);

在Meteor论坛上阅读this thread后,createContainer()作为无状态函数传递,因此无法将此类信息传递给它。

根据该帖子,我唯一的两个选择是:

  1. 创建包装器组件(ItemRow1.jsxItemRow2.jsx
  2. 通过Session.get()
  3. 将参数传递给发布功能

    我尝试了2号,但是它开始每秒读取Session.get数百次,并使我的应用程序停止运行。

    没有。 1会起作用,但看起来非常重复,只是为了对第二行数据进行分页......有没有更好的方法来做到这一点?

0 个答案:

没有答案