Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 必须返回有效的React元素(或null)_Meteor_Reactjs - Fatal编程技术网

Meteor 必须返回有效的React元素(或null)

Meteor 必须返回有效的React元素(或null),meteor,reactjs,Meteor,Reactjs,此Meteor React代码正在生成浏览器控制台错误: 警告:ListItems(…):必须返回有效的React元素(或null)。您可能返回了未定义、数组或其他无效对象 跟踪器重新计算功能异常: 知道为什么吗?谢谢 //myList.jsx import React from 'react'; const renderIfData = (listItems) => { if (listItems && listItems.length > 0) {

此Meteor React代码正在生成浏览器控制台错误:

警告:ListItems(…):必须返回有效的React元素(或null)。您可能返回了未定义、数组或其他无效对象

跟踪器重新计算功能异常:

知道为什么吗?谢谢

//myList.jsx

import React from 'react';

const renderIfData = (listItems) => {
  if (listItems && listItems.length > 0) {
    return listItems.map((item) => {
      return <li key={item._id}>{item.car}</li>;
    });
  } else {
    return <p> No cars yet!</p>
  }
};

export const ListItems = ({listItems}) => {
  <ol>{renderIfData(listItems)}</ol>
};


//cars.jsx

  import React from 'react';
import ReactDOM from 'react-dom';
import { composeWithTracker } from 'react-komposer';
import { ListItems } from '../imports/ui/myList.jsx';
import { CarsCol } from '../imports/api/collections.js';

const composer = (props, onData) => {
  const sub = Meteor.subscribe('carsCol');
  if (sub.ready()) {
     const cars = CarsCol.find().fetch();
    onData(null, {cars});
   }
};


const Container = composeWithTracker(composer) (ListItems);
ReactDOM.render(<Container />, document.getElementById('react-root'));
//myList.jsx
从“React”导入React;
const renderIfData=(列表项)=>{
如果(listItems&&listItems.length>0){
返回listItems.map((项目)=>{
返回
  • {item.car}
  • ; }); }否则{ 还没有车回来

    } }; 导出常量ListItems=({ListItems})=>{ {renderIfData(listItems)} }; //cars.jsx 从“React”导入React; 从“react dom”导入react dom; 从'react komposer'导入{composeWithTracker}; 从“../imports/ui/myList.jsx”导入{ListItems}; 从“../imports/api/collections.js”导入{CarsCol}; const composer=(道具,onData)=>{ const sub=Meteor.subscribe('carsCol'); if(sub.ready()){ const cars=CarsCol.find().fetch(); onData(null,{cars}); } }; const Container=composeWithTracker(编写器)(列表项); render(,document.getElementById('react-root');

    除了这一部分以外,所有的东西看起来都不错:

    return listItems.map((item) => {
      return <li key={item._id}>{item.car}</li>;
    });
    
    返回列表项.map((项)=>{
    返回
  • {item.car}
  • ; });
    此操作的结果是一个元素数组,而React会以您收到的错误类型来阻止它。事实上,在React 16中,他们承诺允许这样做,但您可能使用的是版本15。无论如何,我建议在任何地方都返回一个根元素,这样整个事情看起来就像

    //myList.jsx
    
    import React from 'react';
    
    export const ListItems = ({listItems}) => {
      if (listItems && listItems.length > 0) {
        return (
          <ol>
            {listItems.map((item) => (
              <li key={item._id}>{item.car}</li>
            ))}
          </ol>
        );
      } else {
        return (
          <p>No cars yet!</p>
        );
      }
    };
    
    
    //cars.jsx
    
    import React from 'react';
    import ReactDOM from 'react-dom';
    import { composeWithTracker } from 'react-komposer';
    import { ListItems } from '../imports/ui/myList.jsx';
    import { CarsCol } from '../imports/api/collections.js';
    
    const composer = (props, onData) => {
      const sub = Meteor.subscribe('carsCol');
      if (sub.ready()) {
        const cars = CarsCol.find().fetch();
        onData(null, {cars});
      }
    };
    
    
    const Container = composeWithTracker(composer) (ListItems);
    ReactDOM.render(<Container />, document.getElementById('react-root'));
    
    //myList.jsx
    从“React”导入React;
    导出常量ListItems=({ListItems})=>{
    如果(listItems&&listItems.length>0){
    返回(
    {listItems.map((项)=>(
    
  • {item.car}
  • ))} ); }否则{ 返回( 还没有车

    ); } }; //cars.jsx 从“React”导入React; 从“react dom”导入react dom; 从'react komposer'导入{composeWithTracker}; 从“../imports/ui/myList.jsx”导入{ListItems}; 从“../imports/api/collections.js”导入{CarsCol}; const composer=(道具,onData)=>{ const sub=Meteor.subscribe('carsCol'); if(sub.ready()){ const cars=CarsCol.find().fetch(); onData(null,{cars}); } }; const Container=composeWithTracker(编写器)(列表项); render(,document.getElementById('react-root');
    突出显示的代码中没有任何错误。通常,如果忘记导出组件,就会发生这种情况。列表项没有导出。警告可以扩展。它显示了发生错误的文件。
    从“../containers/myList.jsx”导入{ListItems}通常,这在components文件夹中?