{"id":464915,"date":"2024-09-26T11:17:47","date_gmt":"2024-09-26T11:17:47","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=464915"},"modified":"2026-02-23T07:00:14","modified_gmt":"2026-02-23T07:00:14","slug":"create-odoo-cart-page-using-reactjs","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/","title":{"rendered":"How to create Odoo cart page using ReactJS"},"content":{"rendered":"\n<p>To create a cart page for an Odoo-based <a href=\"https:\/\/webkul.com\/blog\/what-is-headless-ecommerce\/\" target=\"_blank\" rel=\"noreferrer noopener\">headless eCommerce<\/a> app using ReactJS. Below is a high-level overview to develop cart page and example code snippets to guide you through the process.<\/p>\n\n\n\n<p>First, add the product to the cart from the <a href=\"https:\/\/webkul.com\/blog\/create-odoo-product-using-reactjs\/\">Odoo product page<\/a> for a seamless shopping experience.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Introduction<\/h3>\n\n\n\n<p>Odoo offers a range of API endpoints that allow you to perform different actions like&nbsp;<strong>\u2018products\u2019<\/strong>,&nbsp;<strong>\u2018category-list\u2019,<\/strong>&nbsp;and&nbsp;<strong>\u2018cart\u2019<\/strong>&nbsp;but we\u2019ll work with the&nbsp;<strong>\u2018cart\u2019<\/strong>&nbsp;endpoint.<\/p>\n\n\n\n<p>Basically, the Odoo API is normally the Rest API which provides the <a href=\"https:\/\/store.webkul.com\/odoo-headless-e-commerce.html\">Odoo headless eCommerce<\/a> services and serves as the bridge between your application and the&nbsp;<a href=\"https:\/\/store.webkul.com\/Odoo.html\">Odoo<\/a>&nbsp;Platform.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Getting Start<\/h3>\n\n\n\n<p>We will guide you through this blog step-by-step that how to create product page using <a href=\"https:\/\/webkul.com\/blog\/user-manual-of-odoo-rest-api\/\">Odoo API<\/a>.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"#react-project\">Setup ReactJs Project<\/a><\/li>\n\n\n\n<li><a href=\"#tailwind-css\">Setup Tailwind CSS<\/a><\/li>\n\n\n\n<li><a href=\"#react-router\">Setup React Router<\/a><\/li>\n\n\n\n<li><a href=\"#create-cart-page\">Create Cart Page<\/a><\/li>\n\n\n\n<li><a href=\"#mount-cart-page\">Mount Cart Page<\/a><\/li>\n\n\n\n<li><a href=\"#run-react-app\">Run React App<\/a><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"react-project\">Step 1. Set Up your ReactJs Project<\/h3>\n\n\n\n<p>First, you need a solid foundation for your React application. Use Create React App to bootstrap your project easily. This tool configures everything you need to start building a React app.<\/p>\n\n\n\n<p>Open your terminal and type  below the command.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">npx create-react-app odoo-cart-page<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Navigate the Project Directory.<\/h4>\n\n\n\n<p>After the setup is complete, navigate into your project folder:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">cd odoo-cart-page<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tailwind-css\"><strong>Step 2: Setup Tailwind CSS<\/strong><\/h3>\n\n\n\n<p>You need to implement the <a href=\"https:\/\/webkul.com\/blog\/how-to-use-tailwind-css-in-next-js\/\">Tailwind CSS<\/a> to effective cart page design and its Dev dependencies. Use the following command: <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">npm install -D tailwindcss postcss autoprefixer<\/pre>\n\n\n\n<p>Run the following command to generate the <code><strong>tailwind.config.js<\/strong><\/code> and <code><strong>postcss.config.js<\/strong><\/code> files:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">npx tailwindcss init -p<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Configure Tailwind CSS<\/strong><\/h4>\n\n\n\n<p>Open <strong><code>tailwind.config.js<\/code> <\/strong>and update the <code>content<\/code> array to include paths to your template files. This allows Tailwind to purge unused styles in production:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">\/** @type {import(&#039;tailwindcss&#039;).Config} *\/\nmodule.exports = {\n  content: &#091;\n    &quot;.\/src\/**\/*.{js,jsx,ts,tsx}&quot;, \/\/ Adjust if needed\n  ],\n  theme: {\n    extend: {},\n  },\n  plugins: &#091;],\n}<\/pre>\n\n\n\n<p>In the src directory, open the <strong>index.css<\/strong> file and add the following lines to import tailwind\u2019s base, components, and utilities styles:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">@tailwind base;\n@tailwind components;\n@tailwind utilities;<\/pre>\n\n\n\n<p>Over all setup the project, and you can see the final folder structure.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">.\n\u251c\u2500\u2500 src\/\n\u2502   \u251c\u2500\u2500 App.js\n\u2502   \u251c\u2500\u2500 App.css\n\u2502   \u251c\u2500\u2500 App.test.js\n|   \u251c\u2500\u2500 index.js\n|   \u251c\u2500\u2500 index.css\n\u2502   \u2514\u2500\u2500 logo.svg\n\u251c\u2500\u2500 public\/\n\u2502   \u251c\u2500\u2500 index.html\n\u2502   \u251c\u2500\u2500 logo.svg\n\u2502   \u251c\u2500\u2500 robots.txt\n\u2502   \u2514\u2500\u2500 manifest.json\n\u251c\u2500\u2500 package-lock.json\n\u251c\u2500\u2500 package.json\n\u251c\u2500\u2500 tailwind.config.js\n\u2514\u2500\u2500 README.md<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"react-router\">Step 3: Setup the React Router<\/h3>\n\n\n\n<p>React Router is used to define multiple routes in the application, so you need to install the react router library. Run the following command in your project directory.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">npm install react-router-dom<\/pre>\n\n\n\n<p>Open&nbsp;<code><strong>App.js<\/strong><\/code>&nbsp;File and replace the code to import&nbsp;<strong>BrowserRouter<\/strong>,&nbsp;<code><strong>Route<\/strong><\/code>, and&nbsp;<code><strong>Routes<\/strong><\/code>&nbsp;for displaying the router component.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">import &quot;.\/App.css&quot;;\nimport { BrowserRouter, Route, Routes } from &quot;react-router-dom&quot;;\nimport Layout from &quot;.\/pages\/Layout&quot;;\n\nfunction App() {\n  return (\n    &lt;&gt;\n      &lt;BrowserRouter&gt;\n        &lt;Routes&gt;\n          &lt;Route path=&quot;\/&quot; element={&lt;Layout \/&gt;}&gt;\n            &lt;Route index element={&lt;h1&gt; Render home page &lt;\/h1&gt;} \/&gt;\n          &lt;\/Route&gt;\n        &lt;\/Routes&gt;\n      &lt;\/BrowserRouter&gt;\n    &lt;\/&gt;\n  );\n}\n\nexport default App;<\/pre>\n\n\n\n<p>After this you can create the layout for cart page and other pages like <strong>Home<\/strong> and <strong>product page<\/strong>. <\/p>\n\n\n\n<p>We\u2019ll start by creating a file named&nbsp;<code>Layout.js<\/code>&nbsp;in the&nbsp;<code>src\/pages<\/code>&nbsp;folder. <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">import { Outlet, Link } from &quot;react-router-dom&quot;;\n\nconst Layout = () =&gt; {\n  return (\n    &lt;&gt;\n       {\/* You can add the Header Here *\/}\n      &lt;div className=&quot;container mx-auto min-h-&#091;50vh]&quot;&gt;\n        &lt;Outlet \/&gt;\n      &lt;\/div&gt;\n      {\/* You can add the Footer Here *\/}\n    &lt;\/&gt;\n  );\n};\n\nexport default Layout;<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-cart-page\">Step 4: <strong>Create the Cart Page Component<\/strong><\/h3>\n\n\n\n<p>We\u2019ll start by creating a file named&nbsp;<code>Cart.js<\/code>&nbsp;in the&nbsp;<code>src\/pages<\/code>&nbsp;folder.<\/p>\n\n\n\n<p>This component in React displays the product details, including the image, description, quantity, and total price. Users can choose to proceed to checkout or continue shopping.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">import { useEffect, useState } from &quot;react&quot;;\nimport { Link } from &quot;react-router-dom&quot;;\n\nconst Cart = () =&gt; {\n  const &#091;cart, setCart] = useState();\n  const oddApi=&quot;&lt;Odoo-API-Domain&gt;&quot;;\n  const authenticate =&quot;&lt;API-Authenticate-Key&gt;&quot;;\n  const cartId = &quot;&lt;Cart-Id&gt;&quot;;\n\n  const postData = () =&gt; {\n    fetch(`${odooAPI}`, {\n      method: &quot;GET&quot;,\n      headers: {\n        &quot;Content-Type&quot;: &quot;application\/json; charset=utf-8&quot;,\n        Authenticate: authenticate,\n        cartid: cartId,\n      },\n    })\n      .then((response) =&gt; {\n        if (!response.ok) {\n          throw new Error(&quot;Network response was not ok&quot;);\n        }\n        return response.json();\n      })\n      .then((data) =&gt; {\n        console.log(&quot;Response Data:&quot;, data);\n        setCart(data);\n      })\n      .catch((error) =&gt; {\n        console.error(&quot;Response Error:&quot;, error);\n      });\n  };\n\n  useEffect(() =&gt; {\n    postData();\n  }, &#091;]);\n  const cartData = cart?.customerCart?.items;\n  const prices = cart?.customerCart?.prices;\n  const stepperCls =\n    &quot;flex w-full items-center text-teal-600 after:inline-block after:h-0.5 after:w-full after:border after:border-b after:border-gray-200 after:content-&#091;&#039;&#039;]&quot;;\n  const stepCls =\n    &quot;flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 border-solid border-gray-200&quot;;\n  return (\n    &lt;div&gt;\n      &lt;ol className=&quot;mx-auto flex max-w-&#091;86%] items-center py-6&quot;&gt;\n        &lt;li className={stepperCls}&gt;\n          &lt;span className={stepCls}&gt;\n            &lt;div className=&quot;h-2.5 w-2.5 rounded-full bg-teal-600&quot;&gt;&lt;\/div&gt;\n          &lt;\/span&gt;\n        &lt;\/li&gt;\n        &lt;li className={stepperCls}&gt;\n          &lt;span className={stepCls}&gt;\n            &lt;div className=&quot;h-2.5 w-2.5 rounded-full bg-white&quot;&gt;&lt;\/div&gt;\n          &lt;\/span&gt;\n        &lt;\/li&gt;\n\n        &lt;li className={stepperCls}&gt;\n          &lt;span className={stepCls}&gt;\n            &lt;div className=&quot;h-2.5 w-2.5 rounded-full bg-white&quot;&gt;&lt;\/div&gt;\n          &lt;\/span&gt;\n        &lt;\/li&gt;\n      &lt;\/ol&gt;\n      &lt;div className=&quot;mx-auto max-w-&#091;86%] pb-8&quot;&gt;\n        &lt;div className=&quot;grid grid-cols-1 gap-6 lg:grid-cols-3&quot;&gt;\n          &lt;div className=&quot;lg:col-span-2&quot;&gt;\n            &lt;table className=&quot;w-full border-collapse text-left&quot;&gt;\n              &lt;thead&gt;\n                &lt;tr className=&quot;border-b&quot;&gt;\n                  &lt;th className=&quot;pb-2&quot;&gt;Product&lt;\/th&gt;\n                  &lt;th className=&quot;pb-2&quot;&gt;Quantity&lt;\/th&gt;\n                  &lt;th className=&quot;pb-2&quot;&gt;Price&lt;\/th&gt;\n                &lt;\/tr&gt;\n              &lt;\/thead&gt;\n              &lt;tbody&gt;\n                {Array.isArray(cartData) &amp;&amp;\n                  cartData.length &gt; 0 &amp;&amp;\n                  cartData.map((value, index) =&gt; (\n                    &lt;tr key={index} className=&quot;border-b&quot;&gt;\n                      &lt;td className=&quot;flex items-start py-2&quot;&gt;\n                        &lt;img\n                          src={value?.product?.thumbnail.url}\n                          alt=&quot;Warranty&quot;\n                          className=&quot;mr-4 h-16 w-16&quot;\n                        \/&gt;\n                        &lt;div&gt;\n                          &lt;div className=&quot;line-clamp-2 font-semibold text-teal-700&quot;&gt;\n                            {value.product.name}\n                          &lt;\/div&gt;\n                          &lt;p className=&quot;line-clamp-2 text-sm text-gray-600&quot;&gt;\n                            {value.product.short_description}\n                          &lt;\/p&gt;\n                        &lt;\/div&gt;\n                      &lt;\/td&gt;\n                      &lt;td className=&quot;py-2&quot;&gt;\n                        &lt;div className=&quot;flex items-center&quot;&gt;\n                          &lt;button className=&quot;rounded border px-4 py-0.5&quot;&gt;\n                            -\n                          &lt;\/button&gt;\n                          &lt;span className=&quot;mx-2&quot;&gt;{value?.quantity}&lt;\/span&gt;\n                          &lt;button className=&quot;rounded border px-4 py-0.5&quot;&gt;\n                            +\n                          &lt;\/button&gt;\n                        &lt;\/div&gt;\n                      &lt;\/td&gt;\n                      &lt;td className=&quot;py-2 text-right&quot;&gt;\n                        ${value?.product?.prices?.price?.value.toFixed(2)}\n                      &lt;\/td&gt;\n                    &lt;\/tr&gt;\n                  ))}\n              &lt;\/tbody&gt;\n            &lt;\/table&gt;\n            &lt;div className=&quot;flex justify-between gap-2&quot;&gt;\n              &lt;button className=&quot;mt-6 rounded bg-gray-700 px-6 py-2 text-white shadow-lg&quot;&gt;\n                &lt;Link to=&quot;shop&quot;&gt; Continue Shopping&lt;\/Link&gt;\n              &lt;\/button&gt;\n              &lt;button className=&quot;mt-6 rounded bg-teal-700 px-6 py-2 text-white shadow-lg&quot;&gt;\n                &lt;Link to=&quot;checkout&quot;&gt; Proceed to Checkout&lt;\/Link&gt;\n              &lt;\/button&gt;\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n\n          &lt;div className=&quot;max-h-fit rounded border bg-white p-6 shadow-sm lg:col-span-1&quot;&gt;\n            &lt;h3 className=&quot;mb-4 text-lg font-semibold&quot;&gt;Order Total&lt;\/h3&gt;\n            &lt;div className=&quot;mb-2 flex justify-between&quot;&gt;\n              &lt;span&gt;Subtotal:&lt;\/span&gt;\n              &lt;span&gt;${prices?.subtotal_excluding_tax?.value.toFixed(2)}&lt;\/span&gt;\n            &lt;\/div&gt;\n            {Array.isArray(prices?.applied_taxes) &amp;&amp;\n              prices?.applied_taxes.length &gt; 0 &amp;&amp;\n              prices?.applied_taxes.map((price, index) =&gt; (\n                &lt;div key={index} className=&quot;mb-2 flex justify-between&quot;&gt;\n                  &lt;span&gt;Taxes:&lt;\/span&gt;\n                  &lt;span&gt;${price?.value.toFixed(2)}&lt;\/span&gt;\n                &lt;\/div&gt;\n              ))}\n\n            &lt;div className=&quot;flex justify-between border-t py-2 text-lg font-semibold&quot;&gt;\n              &lt;span&gt;Total:&lt;\/span&gt;\n              &lt;span&gt;${prices?.grand_total?.value.toFixed(2)}&lt;\/span&gt;\n            &lt;\/div&gt;\n\n            &lt;div className=&quot;mt-4&quot;&gt;\n              &lt;a href=&quot;#&quot; className=&quot;text-sm text-teal-700 underline&quot;&gt;\n                Discount code or gift card\n              &lt;\/a&gt;\n            &lt;\/div&gt;\n            &lt;button className=&quot;mt-4 w-full rounded bg-teal-700 px-6 py-3 text-white shadow-lg&quot;&gt;\n              &lt;Link to=&quot;checkout&quot;&gt; Proceed to Checkout&lt;\/Link&gt;\n            &lt;\/button&gt;\n          &lt;\/div&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  );\n};\n\nexport default Cart;<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mount-cart-page\">Step 5: <strong>Mount Cart Page.<\/strong><\/h3>\n\n\n\n<p>Open&nbsp;<code><strong>App.js<\/strong><\/code>&nbsp;File and Mention the component in the routes to navigate and displaying the cart page.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">import &quot;.\/App.css&quot;;\nimport { BrowserRouter, Route, Routes } from &quot;react-router-dom&quot;;\nimport Layout from &quot;.\/pages\/Layout&quot;;\nimport Cart from &quot;.\/pages\/Shop\/Cart&quot;;\n\nfunction App() {\n  return (\n    &lt;&gt;\n      &lt;BrowserRouter&gt;\n        &lt;Routes&gt;\n          &lt;Route path=&quot;\/&quot; element={&lt;Layout \/&gt;}&gt;\n            &lt;Route index element={&lt;h1&gt; Render home page &lt;\/h1&gt;} \/&gt;\n            &lt;Route path=&quot;shop\/cart&quot; element={&lt;Cart \/&gt;} \/&gt;\n          &lt;\/Route&gt;\n        &lt;\/Routes&gt;\n      &lt;\/BrowserRouter&gt;\n    &lt;\/&gt;\n  );\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"run-react-app\">Step 6: Run your React app.<\/h3>\n\n\n\n<p>Run the following command to see the cart page in the terminal, and then check the React app in your browser.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">npm run start<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1129\" height=\"599\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp\" alt=\"The final of the terminal of launch the app.\" class=\"wp-image-465617\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp 1129w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina-300x159.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina-250x133.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina-768x407.webp 768w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>Note:-<\/strong> Navigate the cart page at http:\/\/localhost:3000\/shop\/cart<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"663\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/final-1200x663.webp\" alt=\"The final output of the cart page.\" class=\"wp-image-465405\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/final-1200x663.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/final-300x166.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/final-250x138.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/final-768x424.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/final-1536x849.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/final.webp 1831w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1027\" height=\"737\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/mobilvie.webp\" alt=\"Mobile view for cart page output.\" class=\"wp-image-465528\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/mobilvie.webp 1027w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/mobilvie-300x215.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/mobilvie-250x179.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/mobilvie-768x551.webp 768w\" sizes=\"(max-width: 1027px) 100vw, 1027px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>Congratulations! You\u2019ve successfully learn how to create an odoo Cart page in&nbsp;<a href=\"https:\/\/react.dev\/learn\" target=\"_blank\" rel=\"noreferrer noopener\">React JS<\/a>.<\/p>\n\n\n\n<p>Start your&nbsp;<a href=\"https:\/\/webkul.com\/headless-commerce-development-services\/\" target=\"_blank\" rel=\"noreferrer noopener\">Headless Development<\/a>&nbsp;with Webkul. Webkul an odoo partner &amp; <a href=\"https:\/\/webkul.com\/odoo-development\/\">odoo development company<\/a> offers all kinds of development services including SAAS, Migrations, mobile app, and more.<\/p>\n\n\n\n<p>Thanks for reading this blog.<\/p>\n\n\n\n<p>Hope this blog helped you to better understand how to create an odoo Cart page in React Js.<\/p>\n\n\n\n<p>Happy Coding!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To create a cart page for an Odoo-based headless eCommerce app using ReactJS. Below is a high-level overview to develop cart page and example code snippets to guide you through the process. First, add the product to the cart from the Odoo product page for a seamless shopping experience. Introduction Odoo offers a range of <a href=\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":545,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2007,6357],"tags":[14744,15269,1267,9272,6360,6359,590],"class_list":["post-464915","post","type-post","status-publish","format-standard","hentry","category-odoo","category-react-js","tag-next-headless-theme","tag-next-js-2","tag-odoo","tag-odoo-website","tag-react-ecommerce","tag-react-js","tag-webkul"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to create Odoo cart page using ReactJS - Webkul Blog<\/title>\n<meta name=\"description\" content=\"Creating a cart page for an Odoo-based application using ReactJS in a headless eCommerce. Below is a high-level overview to develop Cart Page\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to create Odoo cart page using ReactJS - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"Creating a cart page for an Odoo-based application using ReactJS in a headless eCommerce. Below is a high-level overview to develop Cart Page\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-26T11:17:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-23T07:00:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp\" \/>\n<meta name=\"author\" content=\"Abhishek Kumar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abhishek Kumar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/\"},\"author\":{\"name\":\"Abhishek Kumar\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/9df44e99abf7df96a2c30b30fe20a4b9\"},\"headline\":\"How to create Odoo cart page using ReactJS\",\"datePublished\":\"2024-09-26T11:17:47+00:00\",\"dateModified\":\"2026-02-23T07:00:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/\"},\"wordCount\":575,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp\",\"keywords\":[\"next headless theme\",\"next js\",\"odoo\",\"Odoo website\",\"react ecommerce\",\"react js\",\"webkul\"],\"articleSection\":[\"Odoo\",\"react js\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/\",\"url\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/\",\"name\":\"How to create Odoo cart page using ReactJS - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp\",\"datePublished\":\"2024-09-26T11:17:47+00:00\",\"dateModified\":\"2026-02-23T07:00:14+00:00\",\"description\":\"Creating a cart page for an Odoo-based application using ReactJS in a headless eCommerce. Below is a high-level overview to develop Cart Page\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp\",\"width\":1129,\"height\":599},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to create Odoo cart page using ReactJS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/9df44e99abf7df96a2c30b30fe20a4b9\",\"name\":\"Abhishek Kumar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5dab3b6807a6aa05fa5ad733392108c9f4ca765e4051f2e20687e10133f461e5?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5dab3b6807a6aa05fa5ad733392108c9f4ca765e4051f2e20687e10133f461e5?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Abhishek Kumar\"},\"description\":\"Abhishek Kumar, a skilled software engineer, specializes in crafting immersive digital experiences. With a focus on frontend development, he excels in creating headless themes . Proficient in JavaScript and next.js, Abhishek's expertise adds a unique and dynamic dimension to any project, ensuring a seamless and engaging user journey.\",\"url\":\"https:\/\/webkul.com\/blog\/author\/abhishekkumar-mg121\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to create Odoo cart page using ReactJS - Webkul Blog","description":"Creating a cart page for an Odoo-based application using ReactJS in a headless eCommerce. Below is a high-level overview to develop Cart Page","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/","og_locale":"en_US","og_type":"article","og_title":"How to create Odoo cart page using ReactJS - Webkul Blog","og_description":"Creating a cart page for an Odoo-based application using ReactJS in a headless eCommerce. Below is a high-level overview to develop Cart Page","og_url":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2024-09-26T11:17:47+00:00","article_modified_time":"2026-02-23T07:00:14+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp","type":"","width":"","height":""}],"author":"Abhishek Kumar","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Abhishek Kumar","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/"},"author":{"name":"Abhishek Kumar","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/9df44e99abf7df96a2c30b30fe20a4b9"},"headline":"How to create Odoo cart page using ReactJS","datePublished":"2024-09-26T11:17:47+00:00","dateModified":"2026-02-23T07:00:14+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/"},"wordCount":575,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp","keywords":["next headless theme","next js","odoo","Odoo website","react ecommerce","react js","webkul"],"articleSection":["Odoo","react js"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/","url":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/","name":"How to create Odoo cart page using ReactJS - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp","datePublished":"2024-09-26T11:17:47+00:00","dateModified":"2026-02-23T07:00:14+00:00","description":"Creating a cart page for an Odoo-based application using ReactJS in a headless eCommerce. Below is a high-level overview to develop Cart Page","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/09\/termina.webp","width":1129,"height":599},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/create-odoo-cart-page-using-reactjs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to create Odoo cart page using ReactJS"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/9df44e99abf7df96a2c30b30fe20a4b9","name":"Abhishek Kumar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5dab3b6807a6aa05fa5ad733392108c9f4ca765e4051f2e20687e10133f461e5?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dab3b6807a6aa05fa5ad733392108c9f4ca765e4051f2e20687e10133f461e5?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Abhishek Kumar"},"description":"Abhishek Kumar, a skilled software engineer, specializes in crafting immersive digital experiences. With a focus on frontend development, he excels in creating headless themes . Proficient in JavaScript and next.js, Abhishek's expertise adds a unique and dynamic dimension to any project, ensuring a seamless and engaging user journey.","url":"https:\/\/webkul.com\/blog\/author\/abhishekkumar-mg121\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/464915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/545"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=464915"}],"version-history":[{"count":61,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/464915\/revisions"}],"predecessor-version":[{"id":527557,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/464915\/revisions\/527557"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=464915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=464915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=464915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}