我正在使用react-meteor从mongodb集合中获取数据。我将loading
作为功能组件的支持。 loading
是布尔值,当准备好获取整个数据时,它将为true。我想在网页上显示JSON响应中的内容,但出现错误:尝试更新已卸载的组件。
代码:
import React, { Component } from "react";
import { Meteor } from "meteor/meteor";
import { withTracker } from "meteor/react-meteor-data";
const Header = ({ allnavitems, loading }) => {
if (loading) {
let navlist = allnavitems;
console.log(navlist.length);
console.log(navlist[0]);
return (
<div>
<h3>{navlist[0]}</h3>
</div>
);
}
};
export default withTracker(params => {
const navitems = Meteor.subscribe("league_navbar", "");
return {
loading: navitems.ready(),
allnavitems: NavigationItems.find().fetch()
};
})(Header);
我尝试了上面的代码,但它给出了错误。可能是什么原因?在控制台中,我收到错误消息:尝试更新已经卸载的组件。
如果我将上面的标题组件更改为以下标题,那么我只能在网页上看到“正在加载...”,但是在获取数据后即加载为true时,它应该显示navlist [0]。
const Header = ({allnavitems, loading}) => {
if(loading){
let navlist = allnavitems
console.log(navlist.length)
console.log(navlist[0])
return(
<div>
<h3>{navlist[0]}</h3>
</div>
)
}else{
return(
<div><p>Loading...</p>
</div>
)
}
}
屏幕截图:
答案 0 :(得分:1)
您不能使用react渲染对象。您可能希望通过解压缩您关心的每个项目的属性,在导航项目上映射并为每个项目呈现一个链接或类似内容,
[Route("edit/{person_id}")]
public IActionResult edit(long person_id)
{
//some stuffs
return View();
}