<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>Itenium</provider_name><provider_url>https://demo.sidekick.be/itenium</provider_url><author_name>Usdevelop</author_name><author_url>https://demo.sidekick.be/itenium/author/usdevelop/</author_url><title>ReduxJS/Toolkit: createSelector - Itenium</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="3c1eCxoBbN"&gt;&lt;a href="https://demo.sidekick.be/itenium/blog/javascript/reduxjs-toolkit-createselector/"&gt;ReduxJS/Toolkit: createSelector&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://demo.sidekick.be/itenium/blog/javascript/reduxjs-toolkit-createselector/embed/#?secret=3c1eCxoBbN" width="600" height="338" title="&#x201C;ReduxJS/Toolkit: createSelector&#x201D; &#x2014; Itenium" data-secret="3c1eCxoBbN" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://demo.sidekick.be/itenium/wp-includes/js/wp-embed.min.js
&lt;/script&gt;
</html><thumbnail_url>https://demo.sidekick.be/itenium/wp-content/uploads/2025/11/reduxjs-toolkit-reselect.png</thumbnail_url><thumbnail_width>360</thumbnail_width><thumbnail_height>300</thumbnail_height><description>reduxjs/reselect: Create memoized &#x2018;selector&#x2019; functionsOne of the Redux Style Guide &#x201C;Strongly Recommended&#x201D; rules is Keep State Minimal and Derive Additional Values:Keep the actual data in the Redux store as minimal as possible, and derive additional values from that state as needed.Another strongly recommended rule is Normalize Complex Nested/Relational StateMany applications need to cache complex data in the store. That data is often received in a nested form from an API, or has relations between different entities in the data (such as a blog that contains Users, Posts, and Comments).Of course your components are interested in those derived values and in the nested data. Keeping those calculations and recombining the data efficient is where createSelector comes into play.</description></oembed>
