小编Dis*_*ame的帖子

如何从不可变树中获取更改的树,最大化节点的重用

我有这样的树结构数据:

[{
    id: 54,
    name:123,
    children: [{
        id: 54,
        name:123,
        children: [{
            id: 154,
            name:1234,
            children []...
        }]
    }]
}, {
 ...
}]
Run Code Online (Sandbox Code Playgroud)

我正在使用Angular 2.据我所知,无论何时输入发生变化,您的变化检测策略都会发生变化onPush.

为了优化树结构更新(例如,在嵌套级别切换节点或更改此类节点的任何属性),我使用了Immutable.

Immutable如何帮助我优化我的更新?我读到,当数据发生变化时,Immutable会重用旧数据中的引用来构造新对象.

如何有效地使用不可变数据结构来更新嵌套级别的节点?

假设

  1. 我没有keyPath任何节点.
  2. 每个节点都有一个唯一的id属性值,可用于查询树数据(但是如何?)

问题

  1. 如何在嵌套级别更新某个节点?什么是最有效的方式来接触该节点?
  2. 如何更新多个节点?我听说过withMutationsAPI,但还有其他有效的方法吗?

我的方法

  1. 深层复制所有内容,然后修改新构造的对象:

    var newState = deepClone(oldState) // deep copy everything and construct a new object 
    newState.nodes.forEach(node => {
        if(node.id == 54) {
            node.id = 789;
        }
    })
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我想要实现的内容:

    var newState = …
    Run Code Online (Sandbox Code Playgroud)

javascript immutability immutable.js immutable-collections

6
推荐指数
1
解决办法
1195
查看次数

Karma配置排除嵌套目录

我正在使用业力进行单位测试我的角度2应用程序.我有以下目录结构 -

??? src/
    ??? index.js
    ??? index.js.text
    ??? index.test.js
    ??? README.txt
    ??? startuptest.js
    ??? lib/
    |   ??? util.js
    |   ??? util.test.js
    |   ??? filters/
    |       ??? kalman.js
    |       ??? lowpass.js
    ??? test/
    |   ??? main.js
    |   ??? lib/
    |       ??? filters.js
    |       ??? util.js
    ??? vendor/
        ??? jquery.js
        ??? three/
            ??? three.js
            ??? three.fps.js
Run Code Online (Sandbox Code Playgroud)

我想排除我的所有文件

src/lib/!(filters)/**
Run Code Online (Sandbox Code Playgroud)

从报道报告.但我想保留目录其余部分的所有文件

我试过了,

{src/**, src/lib/!(filters)/**}/!(*.spec!).js : coverage 
Run Code Online (Sandbox Code Playgroud)

但它正在跳过一切.

这该怎么做?

参考 - https://github.com/karma-runner/karma/issues/508

javascript testing karma-runner karma-jasmine karma-coverage

5
推荐指数
1
解决办法
1252
查看次数

React.js中组件键的重要性

我只是在阅读https://coderwall.com/p/jdybeq/the-importance-of-component-keys-in-react-js上的文章时感到疑惑.

它有一个简单的小提琴代码,它说 - 如果你没有唯一的常量键,你可能最终会进入

  1. 当键不是常量时,重新创建组件的DOM节点
  2. 当密钥不唯一时,重用DOM节点渲染另一个组件

在下面的套装中相当令人困惑 -

  1. 为什么我给key = index(即使它的唯一和常量为什么反应表现得很奇怪?)
  2. 当密钥是唯一但不是常量时,究竟会发生什么?它是否检查DOM中是否存在密钥(如果不是仅删除它).

javascript reactjs

3
推荐指数
2
解决办法
1058
查看次数