2017-02-24 71 views
0

我想了解如何終極版」 CONNECT作品我在想,如果它:終極版連接和mapStateToProps

  1. 創建一個新的組件,每次有新道具 或
  2. 更新現有組件的狀態變化狀態

如果是後者,這是否違背了React的不變道具哲學? 它如何更新道具?

回答

4

React的不變道具哲學意味着你不應該從組件內部更新道具。您可以將新屬性值傳遞給父組件的組件。這就是爲什麼存在componentWillReceiveProps方法的原因。

基本上反應組件接收道具並呈現HTML。組件可以使用本地狀態,但如果使用Redux,通常不需要。 Redux管理單個狀態對象中的所有狀態,並使用connect方法將全局Redux狀態的一部分「連接」到反應組件。它將作爲該組件內的道具提供。

所以要回答你的問題:答案1和2都不是正確的。 當使用連接將一個狀態連接到你的組件時,它將作爲道具傳遞該狀態。你的組件將沒有狀態(除非你寫自己的本地狀態),只有道具。如果redux狀態的相應部分發生變化,這些道具會更新。

+0

那你快速回答。因此,由於我將React集成到現有的應用程序中,並且Redux目前不是一種選擇,因此,從組件外部模擬更新道具的正確方法是什麼? –

+0

無論你渲染一個反應組件,你都可以傳遞動態道具(即從一個可變的道具)。 ) 1)'componentWillReceiveProps()' 2)'shouldComponentUpdate()' 3)'componentWillUpdate()' 4)'渲染(':每當道具更改組件的下列方法將調用順序 5)'componentDidUpdate()' 您只需要基本組件的渲染方法。 –

+0

如果我正確理解你,你在渲染方法中「創建一個新組件」,並且如果它是現有的組件,反應會簡單地更新它的道具? –