2015-10-14 23 views
1

我是FLUX/REACT的新手,我對FLUX有一些疑問。React + Flux:如何在組件渲染後確定是否有狀態更新存儲

這裏的情景:

我有一個商店「A」和成分「B」,一通數據爲「B」,那麼B渲染它,而B渲染後,我一定要救它的HTML內容的高度(理想情況下,應該在「A」)。

根據FLUX,數據流應該是單向的並存儲在商店中,但我無法知道B渲染前的高度。

這就像一個悖論,我...

我應該怎麼辦?

回答

1

要完成此操作,您的組件應該使用新的高度從ActionCreator派發Action。

您的商店應該在您的調度員處註冊並相應地進行更新。然後,您的商店將發佈您的組件應該訂閱並根據需要更新其狀態的更改事件。

由於組件不會發生重大更改,因此組件不會進行重新渲染,並且您的流程將結束。

這是它的外觀視覺(查看=控制器,忽略了這種流動的API盒): Flux Controller dispatching Actions

https://scotch.io/tutorials/getting-to-know-flux-the-react-js-architecture

+0

謝謝回答,但我有一個問題: 是在動作動作在FLUX中有意義嗎? 例如:存儲從Action「x」接收數據,組件通過Action「y」更新其高度。所以流程將如下所示: x - > A - > B - > y - > A 我正在使用[link](https://github.com/facebook/flux/blob/master/src/)的調度程序Dispatcher.js)。 在上述情況下,當y調度時,「_isPending」將被重置爲true,因此A後的任何商店都會通過x – user3828539

+0

否您在另一個調度發生時無法調度新的操作。既然你基本上想讓瀏覽器渲染你的'API'調用(響應是渲染高度),在這種情況下,我認爲使用'setTimeout'來派發你的動作是可以的。但是,通常我不會推薦這種方法。 – pherris

+0

到目前爲止,除了「setTimeout」之外,我沒有任何其他解決方案,並且我知道它是FLUX中的反模式。但我仍然想知道沒有人有這樣的問題嗎?他們將如何克服它呢? – user3828539

相關問題