修改React-Native SectionList数据

问题描述 投票:1回答:1

编辑:我设法使用下面的代码延迟初始加载,所以它现在正确读取并在启动时显示文件名。现在我唯一的问题是在某些数据发生变化时立即更新部分列表。

componentWillMount() {
 setTimeout(() => {
  this.sortAndPlace(this.state.list, this.state.songs)
 })
}

我正在尝试构建一个应用程序,我是新的反应原生和所有它的库。我想用react-native-fs读取文件,从那里构建一个sectionlist数据,当文件被添加,删除和修改时,我想用状态更新来反映这个变化。

RNFS.readDir(path)
.then((result) => {
 // log the file contents
 return Promise.all(result)
 })
 .then((contents) => {
 for (var i = 0; i < contents.length; i++) {
 if (contents[i].isFile() && contents[i].name !== "ReactNativeDevBundle.js") 
{
  var labelTemp = contents[i].name.split(".")
  var label = labelTemp[0]
  song.push(new Song(label))
}
/*RNFS.unlink(contents[i].path)
  .then(() => {
    console.log('FILE DELETED');
  })
  // `unlink` will throw an error, if the item to unlink does not exist
  .catch((err) => {
    console.log(err.message);
});*/
}
})

sortAndPlace(secArray ,array) {
sectionNames = []
filteredSectionNames = []
for (var i = 0; i < array.length; i++) {
  sectionNames.push(array[i].name.substring(1,0))
}
filteredSectionNames = sectionNames.filter(function(item, pos) {
  return sectionNames.indexOf(item) == pos;
}).sort()
for (var i = 0; i < filteredSectionNames.length; i++) {
  secArray[i] = {id: i, title: filteredSectionNames[i], data: []}
}
for (var i = 0; i < secArray.length; i++) {
  for (var j = 0; j < array.length; j++) {
    if (array[j].name.substring(1,0) === secArray[i].title) {
      secArray[i].data[secArray[i].data.length] = {id: j, text: 
array[j].name}
    }
  }
}
function compare(a,b) {
  if (a.text < b.text)
    return -1;
  if (a.text > b.text)
    return 1;
  return 0;
}
for (var k = 0; k < secArray.length; k++) {
  secArray[k].data.sort(compare);
}
this.setState({
  list: secArray,
  songs: array
})
}

我正在使用我的手机进行测试“react-native run-android”。承诺组成歌曲阵列的时间较晚,因此有时app会打开数据,有时我必须重新进入才能看到数据。当我修改文件并重新创建数组时,我必须完全关闭应用程序并启动它以查看更改。 redux能解决这个问题吗?你能就如何解决这个问题向我提出建议吗?先感谢您!

react-native state react-native-fs
1个回答
0
投票

由于我发现了我的粗心错误,我会回复这篇文章。原来我没有正确绑定功能。现在它功能齐全。抱歉你的时间。

© www.soinside.com 2019 - 2024. All rights reserved.