Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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
Javascript 对象作为React子对象无效(找到:[对象承诺])。但我不会回报你的承诺吗?_Javascript_Reactjs - Fatal编程技术网

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!!数据&
    也是一个选项,但更多的是风格问题