Meteor 必须返回有效的React元素(或null)
此Meteor React代码正在生成浏览器控制台错误: 警告:ListItems(…):必须返回有效的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) {
//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文件夹中?