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