2017-01-02 64 views
0

我在select上封装了一个组件基础,它就像搜索选择一样,一个关键功能是链接。如果我想在某些状态发生变化时执行某些操作,我找不到优雅的方式来执行此操作。

例如,一个省选择和一个城市选择,当我改变全省选择,城市选择将更新其选项对应的城市。我想将这个链接功能封装到组件中。

的过程是这样的:

用户改变省

=>组件调度的动作来改变省状态

=>的城市选择发现,省的状态来选择已更改

=>城市选择调度的行动来改变自己的状态

我不能鳍D A的方式与终极版

+0

为什么不按省份列出你的城市,然后当你改变省份你动态地改变城市名单? –

回答

0

优雅地实现该功能。这可能是如何使用终极版教科书例子;我无法想象可能是什么问题。无论如何;这是我如何做到的。

一个愚蠢的组件:Select

两个智能组件:ProvinceSelectCitySelect

两个减速机:provinces: { all, selected }cities: { all, selected }

一个动作:SELECT_PROVINCE

两个省份和城市减速应在SELECT_PROVINCE操作中更改其状态。 provinces应更新其selected属性,cities应更新其all属性。

+0

是的,这种解决方案的工作原理,但它不是一个优雅的解决方案。 CitySelect可能是npm中的一个公共组件,它只能向用户提供更改其类型的操作。所以我的问题是:当某个状态发生变化时,我可以发出一个动作,以便改变另一个状态吗? – jasonjifly

+0

我可能会很可怕地误解了这一点。请让我知道,如果我写的是完全超出范围: CitySelect是一个**域组件**;聪明的组件在减少术语。它只在您的应用程序(域)中与其他智能组件一样有效,所以您不应该考虑将其发布到NPM。 只发布你的通用/愚蠢组件到NPM中,提供尽可能多的props/hooks和合理的默认值,以便我可以在我的Mobx应用程序中使用它们,例如你可以在你的Redux应用程序中使用它们。从其他程序员的角度来看:我不想要你的应用程序内部,我有我自己的。 –

+0

这就是说,如果你仍然想发布一个Redux行为,你可以签出一些例子,例如:https://github.com/erikras/redux-form 目前,你可以通过存储增强器,中间件和更高级的组件来扩展Redux 。谷歌每一个,并试图看看你是否可以得到一个足够通用的实现,仍然有效和其他人发布到NPM。我相信您可以尝试存储增强器和中间件,具体取决于您如何解决问题。 –

0

在作出反应,终极版,分量得到所有国家mapToState调用之内,目前其高达你来决定,你想要哪种状态更改过自己的分量听。

我将接近这样

=>用户更改全省

=>组件调度的行动,改变我省状态

=>城市选择听取省国有及更新城市里面mapToStore

=>和城市将调用渲染更新组件。

相关问题