Mobxで監視可能な配列を使用する方法を理解しようとしています。
私はこれがなぜこれであるかを理解するのに苦労しています:
let entities = observable([]);
entities[0] = "foo";
autorun(() =>{
console.log(entities);
});
書き込み:
[$mobx: Object]
0: (...)
1: (...)
2: (...)
3: (...)
4: (...)
5: (...)
6: (...)
7: (...)
8: (...)
9: (...)
10: (...)
11: (...)
12: (...)
13: (...)
14: (...)
15: (...)
16: (...)
17: (...)
...
999: (...)
古典的な配列の代わりに?
見つけ出す!
ドキュメントに記載されているように
Array.isArray(observable([]))はfalseを生成することに注意してください。したがって、監視可能な配列を外部ライブラリに渡す必要がある場合は常に、他のライブラリに渡すかビルドする前に浅いコピーを作成することをお勧めします。 -array.slice()またはarray.peek()を使用した関数内(とにかく良い習慣です)。したがって、Array.isArray(observable([])。slice())はtrueを返します。
ドキュメントの例は、todos
が実際のJS配列のように見えるため、混乱を招く可能性のあるtodos.filter()
を示しています。そうではありません。
したがって、私の例を機能させるには、実際のJS配列を表示するconsole.log(entities.slice())
を実行する必要があります。