为了账号安全,请及时绑定邮箱和手机立即绑定

如何在屏幕上列出 firebase 存储的所有文件

如何在屏幕上列出 firebase 存储的所有文件

慕的地10843 2023-10-14 17:04:55
所以,我想显示我的 firebase 存储中的所有文件,但我做不到。我试图将它推入一个数组,但只得到一个文件名。我不知道如何将所有文件推送到fileName数组中。function Home() {  const [fileURL, setFileURL] = useState(null);  const [fileName, setFileName] = useState([{name: "" }]);  function getMetaData(itemRef) {    itemRef.getMetadata().then((meta) => {      setFileName(meta);    });  }  useEffect(() => {    function getFiles() {      const storage = firebase.storage().ref("/recursos");      storage.listAll().then((res) => {        res.items.forEach((itemRef) => {          getMetaData(itemRef);        });      });    }    getFiles();  }, []);  return (    <div className="home">      <SinapseNav />      <Container className="d-flex align-items-center justify-content-center mt-4 mb-4">        <Card>          <Card.Body>            <h3 className="text-center mb-4">Pesquisar Recursos</h3>            {<div>{fileName.name}</div>}            <Form.Control placeholder='Ex: "Trigonometria"' />          </Card.Body>        </Card>      </Container>    </div>  );}
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

现在在您的代码中,您将获取每个文件的元数据,然后每次调用:

setFileName(meta);

这意味着每个文件的元数据将替换您之前任何文件的元数据。

为了使代码正常工作,您需要将文件的元数据存储为数组:

const [fileURL, setFileURL] = useState([]);

然后确保将所有文件的元数据添加到数组中。如今,执行此操作的常见方法是:

setFileName([...fileName, meta]);


查看完整回答
反对 回复 2023-10-14
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信