2016-11-19 20 views

回答

2

目的是可能修改它之前創建state.routes數組的副本,以便不發生變異通過state.routes引用原始數組。保持數據結構不可變(通過修改副本而不是修改原始數據)可以幫助避免數組/對象等出現意外的錯誤。被代碼的其他部分修改。這是函數式編程中常用的一個原則,React通常遵循的一個範例。

+0

感謝您的詳細解釋@ lt1。我理解不可變性部分,但const routes = state.routes.slice();不同於const routes = state.routes? – Vkrm

+0

新的數組是淺拷貝 – Jan

+0

如果我們這樣做'常量路線= state.routes',但並不明顯,但我們不是在創造的'state.routes'基於陣列你只是創建一個新的副本變量'routes'實際上仍然在內存中引用與'state.routes'相同的基礎數組。有關更多解釋,您可以查看「按值傳遞」與「按引用傳遞」的概念。在將它分配給一個新變量之前,你必須使用'.slice()'來實際創建一個底層數組的副本。 – lt1