Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 setState不';不要重新渲染页面_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 功能组件上的React setState不';不要重新渲染页面

Javascript 功能组件上的React setState不';不要重新渲染页面,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,帮助:在react函数组件上重新呈现页面时遇到问题。我想在页面的初始加载时获取数据,这就是为什么我使用uuid作为道具提供给页面,并在页面第一次加载时作为空字符串启动它。但将uuid或附件设置为新值不会重新呈现页面。我做错了什么 const [attachments, setAttachments] = React.useState<IAttachment[]>([]); const [uuid, setUuid] = React.useState(''); React

帮助:在react函数组件上重新呈现页面时遇到问题。我想在页面的初始加载时获取数据,这就是为什么我使用uuid作为道具提供给页面,并在页面第一次加载时作为空字符串启动它。但将uuid或附件设置为新值不会重新呈现页面。我做错了什么

  const [attachments, setAttachments] = React.useState<IAttachment[]>([]);
  const [uuid, setUuid] = React.useState('');

  React.useEffect(() => {
    if (uuid !== props.uuid) {
      const fetchAttachment = async () => {
        const accessToken: string = AuthHelper.GetAccessToken() || '';
        if (accessToken) {
          if (activeItem.AttachmentFolderId !== undefined) {
            const attachments: IAttachment[] = await GraphService.getAttachments(accessToken, activeItem.CreatorId, activeItem.AttachmentFolderId);
            setAttachments([...attachments]);
            
          }
        }
      }
      fetchAttachment();
      setUuid(props.uuid);
      console.log('State updated');
    }
  }, []);
const[attachments,setAttachments]=React.useState([]);
常量[uuid,setUuid]=React.useState(“”);
React.useffect(()=>{
if(uuid!==props.uuid){
const fetchAttachment=async()=>{
const accessToken:string=AuthHelper.GetAccessToken()| |“”;
if(accessToken){
如果(activeItem.AttachmentFolderId!==未定义){
const attachments:IAttachment[]=wait-GraphService.getAttachments(accessToken、activeItem.CreatorId、activeItem.AttachmentFolderId);
设置附件([…附件]);
}
}
}
获取附件();
setUuid(props.uuid);
console.log('State updated');
}
}, []);

附件用作列表组件的道具。

您需要将
props.uuid
添加到
useffect
的依赖项数组中。现在只在第一次渲染时调用内部函数。您实际上不需要这个
uuid
状态(如果它是您唯一使用它的地方)。什么是
activeItem
?您确定将调用
setAttachments
?将
uuid
放在呈现函数上(仅用于测试目的)不会重新加载页面?@Saris,谢谢你的评论,问题确实解决了。activeItem是一种状态,每次渲染时都会调用setAttachment。您需要将
props.uuid
添加到
useffect
的依赖项数组中。现在只在第一次渲染时调用内部函数。您实际上不需要这个
uuid
状态(如果它是您唯一使用它的地方)。什么是
activeItem
?您确定将调用
setAttachments
?将
uuid
放在呈现函数上(仅用于测试目的)不会重新加载页面?@Saris,谢谢你的评论,问题确实解决了。activeItem是一种状态,setAttachment在每次渲染时都会被调用。