我使用终极版(+反应)进行分层结构操作,我有两个问题:?
- 如何实现终极版多态性?
- 如何使 “行动冒泡”
我的问题表达更准确:
- 。
我在使用Redux在React中进行结构代码编辑。通过结构编辑器,我的意思是我有树结构和节点,我的应用程序应该在AST上运行而不是纯文本。这些节点可以有多种类型(因为它是用于编辑CSS文件的编辑器,例如这些类型是:“规则”,“声明”,“属性”,“值”,但是它们确实有一些更重要键入)。因此,有在JS对象具有财产type
及其type
决定了它...类型;)
所以假设我有节点是这样的:
{
type: 'property',
id: 4,
rule: '.content > ul > li',
children: [...blah blah......]
}
而且我希望能够写东西这样的:
store.dispatch({type: 'click', nodeId: 4})
的点击。但我希望单击类型rule
的节点上的点击将会比单击property
类型的节点具有其他作用。多态性(但我希望有一个反应组件<Node />
以防止代码重复)。
我知道我可以通过switch/case或者我自己的子功能(我的意思是将动作委托给函数)来实现,但我不想重新发明轮子。我认为多态性的支持对许多应用程序很有用,不仅仅是我的。
那么 - 如何在Redux中实现多态?
2.,
关于动作冒泡的第二个问题。因为我也有树状结构,例如这种像这样的:
{
type: 'rule',
rule: 'body div',
id: 1,
children: [
{
type: 'declaration',
id: 2,
children: [
{type: 'property', name: 'display', id: 3},
{type: 'value', value: 'block', id: 4},
]
}
]
}
我有适当的做出反应的是渲染结构组件(我有哑功能为基础的无状态的阵营0.14组件,所以我不认为组件的代码现在非常重要)。无论如何,我得到代表单个AST节点的<Node/>
组件。
我想用户可以点击例如节点上的id = 3({type: 'property', name: 'display', id: 3},
),动作会自动“冒泡”到节点的父母(在这种情况下,声明节点在id = 2和规则节点在id = 1)。
据我所知,在Redux中没有“动作冒泡”。也许它应该是?或者,也许我想通过其他方式实现我想实现的目标? (通过“动作冒泡”我的意思是在浏览器中的JavaScript事件中类似于“事件冒泡”,只有我想redux actions
冒泡,并且我不希望DOM事件冒泡(这完全是其他事情)。我想将行动减少到泡沫。当我写下“冒泡”时,我将整体设计模式而不是执行。
而这是我的两个问题:)
1.多态性不是关于继承,而是“为不同类型的实体提供单一接口”。 (https://en.wikipedia.org/wiki/Polymorphism_(computer_science))。例如Redux reducer是多态的,因为根据动作类型,一个reducer函数应该有不同的反应:) – hex13
2.我在“自上而下”的方法中遇到了问题,因为在每次操作之后,整个树被重新渲染并且应用程序非常慢。也许我做错了,但现在我自己将Redux连接到React(没有官方绑定),而不是“自上而下”,我将每个无状态元素放在智能有状态容器中,用于监听有趣状态片段的变化并重新渲染它的无声无子的孩子。 – hex13