{"componentChunkName":"component---src-templates-post-template-post-template-tsx","path":"/posts/sitecore-jss-nextjs-rendering-contents-resolver/","result":{"data":{"markdownRemark":{"id":"5a55e502-4fa1-5270-b491-ce4c84e5888d","html":"<p>In this article, I will explain what a Rendering Contents Resolver is, and how to use the OOTB Rendering Contents Resolvers in a Sitecore JSS with Next.js solution.</p>\n<h2 id=\"what-is-a-rendering-contents-resolver\" style=\"position:relative;\"><a href=\"#what-is-a-rendering-contents-resolver\" aria-label=\"what is a rendering contents resolver permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is a Rendering Contents Resolver?</h2>\n<p>In my previous article <a href=\"/posts/sitecore-jss-nextjs-create-first-component\">Sitecore JSS with Next.js - Creating your first component</a>, we created a component that used the data from the datasource item to render itself. This is the default behavior for a component, the data that is passed to the component by the layout service will be the datasource itself.</p>\n<p>However, we come across different requirements for different components. For example:</p>\n<ul>\n<li>Data of the context item.</li>\n<li>Data of the Children items.</li>\n<li>Data from other items.</li>\n</ul>\n<p>We can also use the GraphQL API to perform a query and obtain the data needed for our component. However, Sitecore offers an OOTB solution with the possibility to extend, Rendering Contents Resolvers.</p>\n<p>You can find the Rendering Contents Resolvers in the path /sitecore/system/Modules/Layout Service/Rendering Contents Resolvers.</p>\n<p>The resolvers that Sitecore offers OOTB are as follows:</p>\n<ul>\n<li>Datasource Resolver - the default behavior. It serializes the rendering’s datasource item.</li>\n<li>Datasource Item Children Resolver - serializes the children of the datasource item.</li>\n<li>Context Item Resolver - serializes the context item instead of the datasource item.</li>\n<li>Context Item Children Resolver - serializes the children of the context item.</li>\n<li>Folder Filter Resolver - serializes the descendants of the datasource item, excluding folders.</li>\n</ul>\n<h2 id=\"example-component\" style=\"position:relative;\"><a href=\"#example-component\" aria-label=\"example component permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example Component</h2>\n<p>Here is an example, where we will need to modify the rendering content resolver and use the values in the component.</p>\n<p>I have a component called <strong>Card List</strong>, in which I need to render all the <strong>Card</strong> items under the Card List. Each card has an image, a heading, a description, and a link.</p>\n<ol>\n<li>\n<p>Create a component named <strong>CardListComponent</strong> by following the steps mentioned in <a href=\"/posts/sitecore-jss-nextjs-create-first-component\">my previous article</a>.</p>\n</li>\n<li>\n<p>Add the component created to your page, I will be adding it to a page called <em>demo</em> in my example. Also, add and configure the datasources with some appropriate values.</p>\n</li>\n<li>\n<p>Go to the rendering item of the component in Sitecore and change the value for the field - <em>Rendering Content Resolver</em>, to <em>Datasource Item Children Resolver</em>. Perform a Publish to clear the layout service cache.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/4ba66657c1a957bea5e971cc59620091/32ac3/2023-05-30-14_47_09-.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 41.25%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABPklEQVR42l2P6UoDMRSF5+H949JOC4ogiqBQ0Oor+BbSP6IUx2w3kz2ZzNIZM60W6+EQbsK53yHZ3dX9xeViOrnOpzfT/DZ5Mp7ns1k+O9R8Pt8N+Var1SrD5KFARwU6RuQEsbMvNinoKchXraPURmm7tVNCAsbWWqO1d846p5TKKHshdEHZI8AS8yfCnxEsuXzXJihjpFRKG5kAzmMGmLLkEGPbdVLKTAhfUPuBAxNNCIPzo32oEx44N8aEELz3McaC0LfPrzVmRCjnPOdlVsXKGKqt2fT9MOw9VFWFCU1DP74PXddppaQQ1ph0retapOY6RqFG0nCo1IYR2i/3v9rsWVpnMdbKpKT/yW0Tu2YGkP7WtG3dNCn9F922LSEk45QCIYyQkjEGHIBT4KIslRBKlLIcXQIk1r/lYr3+BszfrlQPKcQoAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/4ba66657c1a957bea5e971cc59620091/8ac56/2023-05-30-14_47_09-.webp 240w,\n/static/4ba66657c1a957bea5e971cc59620091/d3be9/2023-05-30-14_47_09-.webp 480w,\n/static/4ba66657c1a957bea5e971cc59620091/e46b2/2023-05-30-14_47_09-.webp 960w,\n/static/4ba66657c1a957bea5e971cc59620091/c7643/2023-05-30-14_47_09-.webp 1249w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/4ba66657c1a957bea5e971cc59620091/8ff5a/2023-05-30-14_47_09-.png 240w,\n/static/4ba66657c1a957bea5e971cc59620091/e85cb/2023-05-30-14_47_09-.png 480w,\n/static/4ba66657c1a957bea5e971cc59620091/d9199/2023-05-30-14_47_09-.png 960w,\n/static/4ba66657c1a957bea5e971cc59620091/32ac3/2023-05-30-14_47_09-.png 1249w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/4ba66657c1a957bea5e971cc59620091/d9199/2023-05-30-14_47_09-.png\"\n            alt=\"Datasource Item Children Resolver\"\n            title=\"Datasource Item Children Resolver\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n</li>\n<li>\n<p>Now, go to the GraphQL Playground and perform a layout query on your page.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">query <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">layout</span><span class=\"token punctuation\">(</span>site<span class=\"token operator\">:</span> <span class=\"token string\">\"JSSProject\"</span><span class=\"token punctuation\">,</span> <span class=\"token literal-property property\">routePath</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/demo\"</span><span class=\"token punctuation\">,</span> <span class=\"token literal-property property\">language</span><span class=\"token operator\">:</span> <span class=\"token string\">\"en\"</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    item <span class=\"token punctuation\">{</span>\n      rendered\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>The output of the query should be similar to the value below:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"data\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"layout\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"item\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"rendered\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"sitecore\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"context\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"pageEditing\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"site\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jssproject\"</span>\n              <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"pageState\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"normal\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"language\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"en\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"itemPath\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/demo\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"route\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"demo\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"displayName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"demo\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"fields\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token property\">\"pageTitle\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                  <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span>\n                <span class=\"token punctuation\">}</span>\n              <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"databaseName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"web\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"deviceId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"fe5d7fdf-89c0-4d99-9aa3-b5fbd009c9f3\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"itemId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"1a4a3d34-df6a-463f-8b72-58cc56ecc0d4\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"itemLanguage\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"en\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"itemVersion\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"layoutId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"aec6b942-174e-581c-a1a0-50aa51432a66\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"templateId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"74e5c244-4fb5-5ae9-bb19-0899d55bf312\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"templateName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"App Route\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"placeholders\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token property\">\"jss-main\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n                  <span class=\"token punctuation\">{</span>\n                    <span class=\"token property\">\"uid\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"a52a4929-2ac1-4e8a-9a16-1372465c3ac0\"</span><span class=\"token punctuation\">,</span>\n                    <span class=\"token property\">\"componentName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"CardListComponent\"</span><span class=\"token punctuation\">,</span>\n                    <span class=\"token property\">\"dataSource\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"{6539F816-642F-4B48-B5F7-658ABFE4B676}\"</span><span class=\"token punctuation\">,</span>\n                    <span class=\"token property\">\"params\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                    <span class=\"token property\">\"fields\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                      <span class=\"token property\">\"items\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n                        <span class=\"token punctuation\">{</span>\n                          <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"8a43ce24-7ba2-4953-8392-8517b0ad5f32\"</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/demo/Page-Components/CardListComponent/Card-1\"</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Card 1\"</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token property\">\"displayName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Card 1\"</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token property\">\"fields\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                            <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                              <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"GraphQL\"</span>\n                            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                            <span class=\"token property\">\"description\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                              <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"GraphQL\"</span>\n                            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                            <span class=\"token property\">\"link\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                              <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                                <span class=\"token property\">\"href\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/en/graphql\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"anchor\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"linktype\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"internal\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"class\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"target\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"querystring\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"{E507735E-CF6D-57C1-8B02-704027972952}\"</span>\n                              <span class=\"token punctuation\">}</span>\n                            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                            <span class=\"token property\">\"image\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                              <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                                <span class=\"token property\">\"src\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cm.jssproject.localhost/-/media/System/Email/Placeholders/image300x200.jpg?h=200&amp;iar=0&amp;w=300&amp;hash=2D743D7A0F958598889BE6E80062B606\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Placeholder image\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"300\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"200\"</span>\n                              <span class=\"token punctuation\">}</span>\n                            <span class=\"token punctuation\">}</span>\n                          <span class=\"token punctuation\">}</span>\n                        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                        <span class=\"token punctuation\">{</span>\n                          <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"05917a7f-0b00-4234-91d7-1faf45d5d7c0\"</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/demo/Page-Components/CardListComponent/Card-2\"</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Card 2\"</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token property\">\"displayName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Card 2\"</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token property\">\"fields\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                            <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                              <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Styleguide\"</span>\n                            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                            <span class=\"token property\">\"description\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                              <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Styleguide\"</span>\n                            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                            <span class=\"token property\">\"link\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                              <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                                <span class=\"token property\">\"href\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/en/styleguide\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"anchor\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"linktype\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"internal\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"class\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"target\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"querystring\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"{5F92EEFB-A658-56BA-98B3-0C0B1E6420E2}\"</span>\n                              <span class=\"token punctuation\">}</span>\n                            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                            <span class=\"token property\">\"image\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                              <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                                <span class=\"token property\">\"src\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cm.jssproject.localhost/-/media/System/Email/Placeholders/image300x200.jpg?h=200&amp;iar=0&amp;w=300&amp;hash=2D743D7A0F958598889BE6E80062B606\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Placeholder image\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"300\"</span><span class=\"token punctuation\">,</span>\n                                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"200\"</span>\n                              <span class=\"token punctuation\">}</span>\n                            <span class=\"token punctuation\">}</span>\n                          <span class=\"token punctuation\">}</span>\n                        <span class=\"token punctuation\">}</span>\n                      <span class=\"token punctuation\">]</span>\n                    <span class=\"token punctuation\">}</span>\n                  <span class=\"token punctuation\">}</span>\n                <span class=\"token punctuation\">]</span>\n              <span class=\"token punctuation\">}</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n<li>\n<p>Now, we will modify the component definition in the code to match our requirements.</p>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span>\n  Text<span class=\"token punctuation\">,</span>\n  Field<span class=\"token punctuation\">,</span>\n  withDatasourceCheck<span class=\"token punctuation\">,</span>\n  LinkField<span class=\"token punctuation\">,</span>\n  ImageField<span class=\"token punctuation\">,</span>\n  Link<span class=\"token punctuation\">,</span>\n  Image<span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@sitecore-jss/sitecore-jss-nextjs'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> ComponentProps <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'lib/component-props'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">type</span> <span class=\"token class-name\">CardProps</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n  id<span class=\"token operator\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">;</span>\n  fields<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    title<span class=\"token operator\">:</span> Field<span class=\"token operator\">&lt;</span><span class=\"token builtin\">string</span><span class=\"token operator\">></span><span class=\"token punctuation\">;</span>\n    description<span class=\"token operator\">:</span> Field<span class=\"token operator\">&lt;</span><span class=\"token builtin\">string</span><span class=\"token operator\">></span><span class=\"token punctuation\">;</span>\n    link<span class=\"token operator\">:</span> LinkField<span class=\"token punctuation\">;</span>\n    image<span class=\"token operator\">:</span> ImageField<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">type</span> <span class=\"token class-name\">CardListComponentProps</span> <span class=\"token operator\">=</span> ComponentProps <span class=\"token operator\">&amp;</span> <span class=\"token punctuation\">{</span>\n  fields<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    items<span class=\"token operator\">:</span> CardProps<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> CardListComponent <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> fields <span class=\"token punctuation\">}</span><span class=\"token operator\">:</span> CardListComponentProps<span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token constant\">JSX</span><span class=\"token punctuation\">.</span>Element <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n  <span class=\"token operator\">&lt;</span>div className<span class=\"token operator\">=</span><span class=\"token string\">\"container\"</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>div className<span class=\"token operator\">=</span><span class=\"token string\">\"sc-cards\"</span><span class=\"token operator\">></span><span class=\"token punctuation\">{</span>fields<span class=\"token operator\">?.</span>items<span class=\"token operator\">?.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>card<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> card <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">&lt;</span>Card <span class=\"token punctuation\">{</span><span class=\"token operator\">...</span>card<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> Card <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> fields<span class=\"token punctuation\">,</span> id <span class=\"token punctuation\">}</span><span class=\"token operator\">:</span> CardProps<span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token constant\">JSX</span><span class=\"token punctuation\">.</span>Element <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n  <span class=\"token operator\">&lt;</span>div className<span class=\"token operator\">=</span><span class=\"token string\">\"sc-card\"</span> key<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>id<span class=\"token punctuation\">}</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>Text field<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>fields<span class=\"token punctuation\">.</span>title<span class=\"token punctuation\">}</span> tag<span class=\"token operator\">=</span><span class=\"token string\">\"h3\"</span> className<span class=\"token operator\">=</span><span class=\"token string\">'h3'</span><span class=\"token operator\">/</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>Text field<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>fields<span class=\"token punctuation\">.</span>description<span class=\"token punctuation\">}</span> tag<span class=\"token operator\">=</span><span class=\"token string\">\"p\"</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>Link field<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>fields<span class=\"token punctuation\">.</span>link<span class=\"token punctuation\">}</span> className<span class=\"token operator\">=</span><span class=\"token string\">\"link-field\"</span><span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>Image field<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>fields<span class=\"token punctuation\">.</span>image<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Link<span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token function\">withDatasourceCheck</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">&lt;</span>CardListComponentProps<span class=\"token operator\">></span><span class=\"token punctuation\">(</span>CardListComponent<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n</li>\n<li>\n<p>Once you save your changes in the code, your component should render successfully in your rendering host.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/f375e903e9ed23cd96fa3cd4c49a28b7/a076e/2023-05-30-15_36_49-.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 50.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/0lEQVR42pWSvYqDQBSF7QRBsM8iKIhKYuX72FlZ2ya1lZV/aOGLWGllIVjIEghht9RUWkwMjmZvsAkxIZtT3OIw39xzhiGG/Xfz+3M4Hk9NM03TMAwwr88E/nlW38PAGBPTOI4Yd12H0Pn6TuOd4C4CrMulj6IoCII4jn3fr6pqPvewdpnoBrdtu96sV18rQRAoivI8D0zI/7DzJSxJEsuyoiiSJOk4zhJ+qhsM7S3L2m13ruvatl2W5TL2SxiWpGmaZVlRFHme13U9l/wXDE+tqirHcbIsMwwThuEHsaEzYDzPK4pC0zSE/wBGCJmmqeu6YRiapiVJAib8gbfwH5+xDca23hQwAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/f375e903e9ed23cd96fa3cd4c49a28b7/8ac56/2023-05-30-15_36_49-.webp 240w,\n/static/f375e903e9ed23cd96fa3cd4c49a28b7/d3be9/2023-05-30-15_36_49-.webp 480w,\n/static/f375e903e9ed23cd96fa3cd4c49a28b7/e46b2/2023-05-30-15_36_49-.webp 960w,\n/static/f375e903e9ed23cd96fa3cd4c49a28b7/f992d/2023-05-30-15_36_49-.webp 1440w,\n/static/f375e903e9ed23cd96fa3cd4c49a28b7/87fd4/2023-05-30-15_36_49-.webp 1825w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/f375e903e9ed23cd96fa3cd4c49a28b7/8ff5a/2023-05-30-15_36_49-.png 240w,\n/static/f375e903e9ed23cd96fa3cd4c49a28b7/e85cb/2023-05-30-15_36_49-.png 480w,\n/static/f375e903e9ed23cd96fa3cd4c49a28b7/d9199/2023-05-30-15_36_49-.png 960w,\n/static/f375e903e9ed23cd96fa3cd4c49a28b7/07a9c/2023-05-30-15_36_49-.png 1440w,\n/static/f375e903e9ed23cd96fa3cd4c49a28b7/a076e/2023-05-30-15_36_49-.png 1825w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/f375e903e9ed23cd96fa3cd4c49a28b7/d9199/2023-05-30-15_36_49-.png\"\n            alt=\"Cards Listing Component\"\n            title=\"Cards Listing Component\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n</li>\n</ol>\n<p>References</p>\n<ol>\n<li>Sitecore Documentation - <a href=\"https://doc.sitecore.com/xp/en/developers/hd/211/sitecore-headless-development/customizing-the-layout-service-rendering-output.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Customizing the Layout Service rendering output</a></li>\n</ol>\n<p><strong><em>Happy Sitecoring!</em></strong></p>","fields":{"slug":"/posts/2023-06-06-sitecore-jss-with-next-js-rendering-contents-resolver//posts/sitecore-jss-nextjs-rendering-contents-resolver","tagSlugs":["/tag/sitecorejss/","/tag/nextjs/"]},"frontmatter":{"date":"2023-06-06T13:04:44.670Z","description":"This article explains the whats and hows of the Rendering Contents Resolvers in a Sitecore JSS with a Next.js solution. ","tags":["SitecoreJSS","NextJs"],"title":"Sitecore JSS with Next.js - Rendering Contents Resolver","socialImage":{"publicURL":"/static/f375e903e9ed23cd96fa3cd4c49a28b7/2023-05-30-15_36_49-.png"}}}},"pageContext":{"slug":"/posts/2023-06-06-sitecore-jss-with-next-js-rendering-contents-resolver//posts/sitecore-jss-nextjs-rendering-contents-resolver"}},"staticQueryHashes":["251939775","288581551","401334301"],"slicesMap":{}}