Javascript 对象作为React子对象无效(找到:[对象承诺])。但我不会回报你的承诺吗?
我试图将我的组件分离出来,这样我就不会在渲染函数调用中获取数据 到目前为止,我有两个功能组件:Javascript 对象作为React子对象无效(找到:[对象承诺])。但我不会回报你的承诺吗?,javascript,reactjs,Javascript,Reactjs,我试图将我的组件分离出来,这样我就不会在渲染函数调用中获取数据 到目前为止,我有两个功能组件: const Comment = ({data}) => ( <React.Fragment> {data.map((comment, i) => (<li id={comment.id}>{comment.user.displayName}:{comment.text}</li>))} </React.Fragmen
const Comment = ({data}) => (
<React.Fragment>
{data.map((comment, i) => (<li id={comment.id}>{comment.user.displayName}:{comment.text}</li>))}
</React.Fragment>
);
const IssueComment = ({comment}) => {
const [data, updateData] = useState();
useEffect(() => {
const getData = async () => {
const resp = await user.getUser(comment.createdByUserId)
.catch(e => console.log(e));
const json = resp.json()
comment.user = json
updateData(json);
}
getData();
}, []);
return data && <Comment data={data} />
}
const Comment=({data})=>(
{data.map((comment,i)=>({comment.user.displayName}:{comment.text} ))
);
const IssueComment=({comment})=>{
const[data,updateData]=useState();
useffect(()=>{
const getData=async()=>{
const resp=await user.getUser(comment.createdByUserId)
.catch(e=>console.log(e));
const json=resp.json()
comment.user=json
更新数据(json);
}
getData();
}, []);
返回数据&&
}
当我运行React构建时,页面呈现失败,并显示上述错误消息。我以为我包含了要
useffect
?我做错了什么?您的问题在这一行:
return data && <Comment data={data} />
返回数据&&
例如,条件渲染可以很好地处理布尔变量(或条件),而不能处理其他变量
return 0 && <Comment data={data}/>
返回0&&
它将呈现0,而不是0
您需要对数据进行一些检查,例如:
return data==null && <Comment data={data} />
返回数据==null&&
正如@5ar在给您的评论中所提到的,
.json()
是一个承诺,所以您也需要等待,但上面仍然是有效的-这就是您首先出现错误的主要原因您可以在等待之后控制台日志数据吗?@WilliamWang下落?只需在等待之前控制台.log(json)即可updateData@WilliamWang它还在爆炸,控制台中没有写入任何内容wait resp.json()
-,如果您在getUser
中使用Fetch API只是作为旁注,如果您想捕获所有将对象转换为布尔值的伪/真值,如return!!数据&
也是一个选项,但更多的是风格问题