是否可以在NgRx中创建复合选择器?
示例:
export const paramSelector = (id) => createSelector(
someState,
state => state[id]
);
export const selectedId = createSelector(
someOtherState,
state => state.id
);
export const compoundSelector = createSelector(
selectedId,
id => paramSelector(id),
state => state
);
显然以上代码无法正常工作。有什么方法可以得到期望的结果(最后一个片段)?
这个想法是要有专门的参数化选择器,以及一些使用它们的高级选择器。想象paramSelector
更复杂。有时您想将paramSelector
与特定参数一起使用。有时候,您不想自己提供参数,而是想从商店中获取参数(例如,路由器状态)。
现在,您永远不需要重复相同的代码,因此需要一个复合选择器。
功能请求已创建。可以找到here。
答案 0 :(得分:0)
您的第一个代码段应该可以工作,第二个代码段不能工作-有关更多信息,请参考NgRx: Parameterized selectors。
例如:
<ul>
{% for book_type in book_types %}
<li>
<!-- you have to handle the logic of the url here -->
<a href="{% url 'my_url' book_type.0 %}">{{ book_type.1 }}</a>
</li>
{% endfor %}
</ul>
在下一个版本中,有可能向选择器添加额外的道具,如:
url(r'^my_url/(?P<book_type_id>\d+)/$', my_view, name='my_url'),