【问题标题】:React Native refresh the component after deleting a file from react-native-fs从 react-native-fs 删除文件后 React Native 刷新组件
【发布时间】:2020-01-10 00:54:17
【问题描述】:

我正在使用 react-native-fs 列出和删除我的应用程序中的文件,我已经列出了一个组件中的所有文件,并且我有另一个组件来显示文件(图像查看器),我想删除文件图像查看器,删除文件后应该重定向到列表页面,删除我正在导航到列表组件的文件,但我仍然可以在列表中看到已删除的文件

deleteImageFile = () => {
  const fileName = this.state.fileName;
  const dirPicutures = RNFS.DocumentDirectoryPath;
  const filepath = `${dirPicutures}/${fileName}`;
  RNFS.exists(filepath)
  .then( (result) => {
      console.warn("file exists: ", result);

      if(result){
        return RNFS.unlink(filepath)
          .then(() => {
            console.warn('FILE DELETED');
            this.props.navigation.navigate('Gallery');

          })
          // `unlink` will throw an error, if the item to unlink does not exist
          .catch((err) => {
            console.warn(err.message);
          });
      }

    })
    .catch((err) => {
      console.warn(err.message);
    });
  }

如果目录中存在文件,则文件正在删除,如果没有,我将收到文件不存在消息。

删除成功后我正在调用

this.props.navigation.navigate('Gallery'); 

图库是主屏幕(列表屏幕),重定向也有效,但已删除的文件仍存在于列表中。

请帮帮我。

【问题讨论】:

  • 你是如何管理状态的?你在使用 redux 吗?
  • 不,我正在使用 componentDidMount 从 DocumentDirectoryPath 的数组列表中读取文件,例如 this.state = { filesList : [] }
  • 因此您必须使用拼接或删除从 filesList 表中删除已删除的文档(希望您的表被索引)
  • 我正在从文件系统中删除,而不是从任何表中删除
  • 我认为你从 fileSystem 和 filesList 中删除以更新状态。

标签: reactjs react-native


【解决方案1】:

我认为问题只是应用程序没有反映文件系统的实时状态。

这里没有足够的代码可以说明,但是filesList 需要动态更新。这要么意味着每次呈现画廊时将文件系统内容加载到 filesList,要么在成功的 RNFS.unlink(filepath) 事件时从 filesList 中删除文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多