【发布时间】:2016-05-21 23:18:24
【问题描述】:
假设我有一个HomeController 和Menu(组件)。
我知道所有的道具都应该自上而下并且是不可变的。但是,假设我需要菜单来显示特定菜单的所有链接,该过滤逻辑应该放在菜单中还是控制器中?
基本上是这段代码:
var items = menus.filter((item) => { item.name === 'main'; });
【问题讨论】:
标签: reactjs reactjs-flux
假设我有一个HomeController 和Menu(组件)。
我知道所有的道具都应该自上而下并且是不可变的。但是,假设我需要菜单来显示特定菜单的所有链接,该过滤逻辑应该放在菜单中还是控制器中?
基本上是这段代码:
var items = menus.filter((item) => { item.name === 'main'; });
【问题讨论】:
标签: reactjs reactjs-flux
如果没有进一步的上下文,很难说出正确的方法是什么:
A. Menu(控制器)内的逻辑 如果你有一个完整的 menu-wrapper 组件(可以称为“menu-controller”),它可以在内部确定要显示哪个菜单以及在哪个结构中显示,那么 filter 语句可以在菜单组件内部。
所有相关信息都应作为道具传递给菜单组件。
您的声明(在菜单组件内)将如下所示:
var items = this.props.menus.filter((item) => { item.name === this.props.pagename; });
这将是避免臃肿的主控制器,并在每个页面上获得可维护和可重用菜单的好方法。
B. HomeController 内部的逻辑 如果您的菜单行为是
那么最好坚持 MVC 原则,即逻辑应该在控制器内部,并尽可能保持组件的纯净(和愚蠢)。 在这种情况下:
items) 传递给菜单组件【讨论】: