1

这里是 Meteor/React 新手,通过Meteor-React 教程并卡在第 3 步。我的问题是数据没有显示在浏览器中,尽管它存在于数据库中。

这是我的导入/ui/App.jsx:

import React, { Component, PropTypes } from 'react';
import { createContainer } from 'meteor/react-meteor-data';

import { Tasks } from '../api/tasks.js';

import Task from './Task.jsx';

class App extends Component {
  renderTasks() {
    return this.props.tasks.map((task) => (
      <Task key={task._id} task={task} />
    ));
  }

  render() {
    return (
      <div className="container">
        <header>
          <h1>Todo List</h1>
        </header>

        <ul>
          {this.renderTasks()}
        </ul>
      </div>
    );
  }
}

App.propTypes = {
  tasks: PropTypes.array.isRequired,
};

export default createContainer(() => {
  return {
    tasks: Tasks.find({}).fetch(),
  };
}, App);

控制台中没有显示错误。

基本上this.props.tasks返回空数组。但db.tasks.find({})在控制台显示记录。没有太多改变,如果我硬编码任务记录,它们显示得很好,所以问题不在于任务组件。任何人都可以在这里提供帮助吗?将不胜感激。

客户端/main.jsx:

import React from 'react';
import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';

import App from '../imports/ui/App.jsx';

Meteor.startup(() => {
  render(<App />, document.getElementById('render-target'));
});

包.json:

{
  "name": "simple-todos",
  "private": true,
  "scripts": {
    "start": "meteor run"
  },
  "dependencies": {
    "meteor-node-stubs": "~0.2.0",
    "react": "^15.1.0",
    "react-addons-pure-render-mixin": "^15.1.0",
    "react-dom": "^15.1.0"
  }
}

npm 版本3.3.12 节点版本5.6.0

4

1 回答 1

2

根据您的描述,您的数据库似乎无法在服务器和客户端上访问。可能是您忘记在服务器端添加数据库的引用。尝试导入main.js服务器的任务文件。

确保您的 server/main.js 具有以下行:

import '../imports/api/tasks.js';
于 2016-05-25T07:05:13.523 回答