0

也许我在这里遗漏了一些东西,但我没有让数据从我的数据库流入我的组件。

我正在使用服务器上的 simpleSchema/collection2 使用 react 和 meteor (w/mantra)。据我所知,我的发布/订阅设置正确。

我已经用 mantra cli 构建了一些东西。(顺便说一句很棒)这是我的设置:

组件:(客户端/模块/组件/sidebar_hubs.js)

import React from 'react';
const renderIfData = ( hubs ) => {
if ( hubs && hubs.length > 0 ) {
     return hubs.map( ( hub ) => {
      return <li key={ hub._id }>{ hub.name }</li>;
    });
} else {
return <p>No hubs yet!</p>;
}
};

const SidebarHubs = ({hubs}) => (

 <div>
     <h1> Hubs </h1>
     {hubs.length}
     <ul> { renderIfData( hubs ) } </ul>
  </div>
);

export default SidebarHubs;

容器(客户端/模块/容器/sidebar_hubs.js)

import {useDeps, composeAll, composeWithTracker, compose} from 'mantra-core';
import SidebarHubs from '../components/sidebar_hubs.js';


export const composer = ({context}, onData) => {

 const {Meteor, Collections} = context();
 const subscription = Meteor.subscribe( 'hubs' );

 if ( subscription.ready() ) {
   const hubs = Collections.Hubs.find().fetch();
   onData( null, { hubs } );
 }

};

 export const depsMapper = (context, actions) => ({
   context: () => context
 });

export default composeAll(
  composeWithTracker(composer),
  useDeps(depsMapper)
)(SidebarHubs);

发布:(服务器/publications/hubs.js)

 import {Hubs} from '/lib/collections';
 import {Meteor} from 'meteor/meteor';
 import {check} from 'meteor/check';

 export default function () {
   Meteor.publish('hubs', function () {
     return Hubs.find();
   });
 }

我在这里遗漏了什么?

4

1 回答 1

0

这令人困惑,因为没有任何东西被破坏......并且组件正在被渲染,只是没有数据。

扔了几个console.logs,似乎我的容器甚至没有被运行。正如我认为的那样,这很明显啊……在我的 main_layout.js 文件中。

import SidebarHubs from '../components/sidebar_hubs.js';

至:

import SidebarHubs from '../containers/sidebar_hubs.js';

现在就像一个魅力。良好的调试技能有很长的路要走......

于 2016-04-21T17:18:07.500 回答