显示逻辑,在控制器或组件中?

时间:2016-02-11 09:09:34

标签: reactjs reactjs-flux

说我有HomeControllerMenu(组件)。

我知道所有的道具应该来自自上而下并且是不可变的。但是,我想说我需要菜单来显示特定菜单的所有链接,过滤逻辑应该放在菜单还是控制器中?

基本上这段代码: var items = menus.filter((item) => { item.name === 'main'; });

1 个答案:

答案 0 :(得分:0)

如果没有进一步的背景,很难说出正确的方法:

:一种。菜单(控制器)中的逻辑 如果你有一个完整的菜单包装组件(可以调用' menu-controller'),它可以在内部找出要显示的菜单和结构,那么filter语句可以在菜单组件内部。 / p>

然后,所有相关信息都应作为道具传递给菜单组件。

您的陈述(内部菜单组件)将类似于:

var items = this.props.menus.filter((item) => { item.name === this.props.pagename; });

这将是避免膨胀的家庭控制器以及在每个页面上获得可维护和可重复使用的菜单的好方法。

<强> B中。 HomeController中的逻辑 如果菜单的行为是

  • 非常特定于Home,菜单不是可以跨页面重复使用
  • 取决于各种其他Home参数

然后,最好坚持MVC原则,逻辑应该在控制器内部,并保持组件尽可能纯(和哑)。 在那种情况下:

  • 让HomeController选择要显示的右侧菜单项,并构建菜单结构。
  • 将配置的菜单(items)传递给菜单组件
  • 菜单组件只是呈现它收到的项目(没有过滤器)。