在React中解耦UI组件

时间:2016-06-16 18:47:48

标签: javascript reactjs redux react-jsx react-redux

我是React的新手,但还没有找到适合我工作中第一个问题的解决方案。

特定上下文是一个导航组件,它组成了几个其他组件,它们是一个可再发行的单元,可作为整个模块独立测试。

组件的用例有时会使用React媒体查询在桌面模式下呈现,有时则在移动设备中呈现 - 在这种情况下,需要使用弹出行为进行修饰。

所以我想要将导航组件与必须了解弹出窗口分开。关于“告诉不要问”'原则或事件驱动我希望能够通知父母导航已经改变,并且取决于该组件的实现方式如何响应(在移动设备中,弹出窗口需要隐藏,在桌面上没有弹出装饰器)。

我查看了redux-ui,这是一个使用注释的很好的语法糖,但是当它试图在状态层次结构中设置的属性不存在时,它会倒下。此外,这打破了脱钩模式。

我在这里有点抽象我意识到但是有人建议我如何处理这个问题吗?我怀疑一个可能的解决方案可能不涉及装饰包装器强加的层次结构(is-a),而是具有弹出功能,但欢迎行业经验。

谢谢

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。最简单的是纯粹用CSS做。将组件的所有HTML始终放在组件中,只有CSS才能了解移动设备。

或者,您可以拥有一个在应用加载时设置的全局状态,并告诉应用程序它是在移动设备还是桌面设备上,然后将其传递给任何相关组件。这种方法会有点痛苦,因为移动'和桌面'真的只是小屏幕'和更大的屏幕'因此,当用户处于使用应用程序的中间时(例如,更改屏幕大小),这可能会发生变化。因此,您必须跟踪一堆不断监听窗口调整大小事件的侦听器。

最简单的解决方案似乎确实是纯CSS。

相关问题