使用不可变状态更新JavaScript应用中的所选项目

时间:2015-11-12 14:49:31

标签: reactjs immutability conceptual immutable.js redux-framework

假设我有一个JavaScript / HTML应用

  • 管理项目
  • 具有所选项目的概念
  • 在应用运行时获取对项目的实时更新。

如果我希望我的应用程序使用不可变状态(immutable.js,redux,react等),从概念上讲,如果它们是相同的,我如何保持列表中项目的更新与应用程序的选定项目同步?

如果我使用纯JavaScript对象/数组和变异,那么所选项目将是对某个对象的引用,而项目列表实际上是对项目对象的引用列表。如果我更改了项目列表中对象的属性,那么它将与所选项目同步,因为它是同一个对象。

如果我使用不可变状态,我将如何管理类似的东西? 如果对所选项目进行了更新,我是否还要记得返回一个新状态,其中列表中的项目不同并且所选项目应用了相同的转换?

一个想法是没有选定的项目,但有一个选定的索引,但是当我重新排序我的项目列表时,我是否必须记住返回一个新的状态,其中所选的索引是不同的?

是否存在处理此类问题的模式?

1 个答案:

答案 0 :(得分:1)

这是我这样做的一种方式。您可以将对index的引用更改为item.id。



    List<String> lines = new ArrayList<String>();
    for(String fileName : textFileNames){ // Loop over each file that we found in the directory searching
        BufferedReader fileReader = new BufferedReader(new FileReader("StackTxtFiles/"+fileName)); // Create reader with access to file. Add the directory we are looking in
        String fileLine = fileReader.readLine(); // Read the first line
        while (fileLine != null) { // While there are still lines to read, keep reading
            lines.add(fileLine); // Store the current line
            fileLine = fileReader.readLine(); // Grab the next line
        }
        fileReader.close(); // Read all the lines, so close the read
    }
&#13;
&#13;
&#13;