0
ネイティブナビゲーションNavigationStateUtils.jsでの実験、リアクションネイティブナビゲーション実験(NavigationStateUtils)、スライスを使用する目的は?
スライスを使用する理由は、slice()が使用されていなくても同じ正確なルート配列を返すためです。
それとも、ポップと一致するようにただそこにあります。
ネイティブナビゲーションNavigationStateUtils.jsでの実験、リアクションネイティブナビゲーション実験(NavigationStateUtils)、スライスを使用する目的は?
スライスを使用する理由は、slice()が使用されていなくても同じ正確なルート配列を返すためです。
それとも、ポップと一致するようにただそこにあります。
目的はstate.routes
によって参照元の配列を変異させないように、それを変更する前にstate.routes
配列のコピーを作成することはおそらくです。データ構造を変更不可能に保つ(オリジナルを変更するのではなく、変更したコピーを作成することによって)、配列/オブジェクト/などの予期しないバグを避けることができます。コードの他の部分によって変更されます。これは、関数型プログラミングで一般的に使用される原則であり、Reactが一般的に守っているパラダイムです。
ありがとうございます説明@ lt1。私は不変部分を理解していますが、const routes = state.routes.slice(); const routes = state.routesとは異なりますか? – Vkrm
新しい配列は浅いコピーです – Jan
'const routes = state.routes'を実行すると明らかではありませんが、' state.routes'配列のコピーを作成していません。変数 'routes'は実際には' state.routes'と同じメモリ内の同じ配列を参照しています。その詳細な説明については、 'pass by value'と' pass by reference'の概念を調べることができます。新しい変数に割り当てる前に、 '.slice()'のようなものを使って配列のコピーを実際に作成する必要があります。 – lt1