Reactjs 如何使用定制挂钩>;
我正在将图像和该图像的标题上载到firebase。我已经做了一个自定义钩子(useStorage),用于上传图像和该图像的标题。我有两个独立的组件UploadForm和ProgressBar,我将标题和选定的图像和标题从UploadForm传递到ProgressBar。我能够在firestore中为图像和标题创建字段,图像正在上载,但标题字段仍然是空字符串 我附上3个文件的代码,任何帮助将不胜感激Reactjs 如何使用定制挂钩>;,reactjs,react-hooks,Reactjs,React Hooks,我正在将图像和该图像的标题上载到firebase。我已经做了一个自定义钩子(useStorage),用于上传图像和该图像的标题。我有两个独立的组件UploadForm和ProgressBar,我将标题和选定的图像和标题从UploadForm传递到ProgressBar。我能够在firestore中为图像和标题创建字段,图像正在上载,但标题字段仍然是空字符串 我附上3个文件的代码,任何帮助将不胜感激 从'react'导入{useState,useffect}; 从“../firebase/con
从'react'导入{useState,useffect};
从“../firebase/config”导入{projectStorage,projectFirestore,timestamp};
const useStorage=(文件)=>{
const[progress,setProgress]=useState(0);
const[error,setError]=useState(null);
const[url,setUrl]=useState(null);
const[title,setTitle]=useState(“”);
useffect(()=>{
//参考资料
const storageRef=projectStorage.ref(file.name);
const collectionRef=projectFirestore.collection('images');
storageRef.put(file).on('state_changed',(snap)=>{
让百分比=(snap.bytesttransfered/snap.totalBytes)*100;
进度(百分比);
},(错误)=>{
设置错误(err);
},异步()=>{
const url=wait-storageRef.getDownloadURL();
const createdAt=时间戳();
wait collectionRef.add({url,createdAt,title});
setUrl(url);
片名(片名);
});
},[文件,标题];
返回{progress,url,error,title};
}
导出默认存储代码>据我所知,你永远不会从任何地方得到标题
。您所要做的就是将状态变量title
发送到Firestore,然后setTitle
发送到相同的空字符串title
你的意思是将标题
与文件
一起传递到钩子中吗?使用存储
有一个[title,setTitle]
钩子,在
await collectionRef.add({ url, createdAt, title });
setUrl(url);
setTitle(title);
但问题是标题是空的。你从不设定标题。将标题传递给进度条,但不使用它。您应该更新useStorage两个take to参数:file和header,并调用useStorage(file,header)
将useStorage签名更新为const useStorage=(文件,头)=>{}
在useStorage内部,您可以更新const[title,setTitle]=useState(header)
我遇到了问题,title是useStorage签名,从未使用header值更新过。但再加上一个论点,它就成功了。