2016-03-10 23 views
5

Mobxで観測可能な配列を使用する方法を理解しようとしています。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: (...) 

を?

答えて

19

図解!

クマがArray.isArray()[](観測可能)がfalseを得られますので、あなたは外部ライブラリに観測可能な配列を渡す必要があるとき、それがあることを念頭に置いてのドキュメントに記載されているようにarray.slice()やarray.peek()を使って他のライブラリや組み込み関数に渡す前に浅いコピーを作成することをお勧めします。したがって、Array.isArray(observable([])。slice())はtrueを返します。

のdoc exempleは私たちにtodosは、実際のJSの配列のように見えるので、混乱を招く可能性がtodos.filter()を示しました。そうではありません。

私の例題を動作させるには、実際のJS配列を表示するconsole.log(entities.slice())にするだけです。

+0

この問題は、