Quiero implementar un sistema de referidos. Para eso, necesito verificar la URL de la página, si contiene algo como esto: https://myurl.com/referralID=123
Si la URL contiene una referencia, entonces necesito guardar el valor de ID ( 123 en este ejemplo ) en una cookie, que usaré más adelante ( verificaré si esta cookie existe ).
No he trabajado con cookies antes, ni he experimentado con React.
import React, { useEffect, Fragment } from "react" import { Helmet } from "react-helmet" import { useRuntime } from "vtex.render-runtime" import "./style.global.css" checkCookie() { let refId = window.location.href.indexOf('refferalID=123') if ( refId ) { // document.cookie = `refferalID=${value}` document.cookie = '123' } else { console.log("no refferal ID :(") } } const Head = ({}) => { return ( <Fragment> <Helmet> {checkCookie() } </Helmet> </Fragment> ) } Head.propTypes = {} export default Head¿Cómo podría verificar la URL no solo para referalID = 123, sino también para cualquier ID y guardar este valor en una cookie que podría enviarse después?
Para guardar y recuperar cookies por nombre, sin usar una biblioteca adicional, puede usar las siguientes funciones:
export const setCookie = (cname, cvalue) => { var d = new Date(); d.setTime(d.getTime() + 24 * 60 * 60 * 1000); var expires = 'expires=' + d.toUTCString(); document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'; }; export const getCookie = cname => { var name = cname + '='; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1); } if (c.indexOf(name) === 0) { return c.substring(name.length, c.length); } } return ''; }; Para extraer el parámetro de consulta de la solicitud, puede usar URLSearchParams de esta manera:
const queryParams = new URLSearchParams(window.location.search) const id= queryParams.get("refferalID") if(id) { //save id in cookie setCookie("refferalID",id); }Más tarde, si desea obtener una cookie, puede usar la función getCookie, así:
const cookie = getCookie("refferalID");Por ejemplo, tal vez puedas seguir un camino como este
import Cookies from 'universal-cookie'; const queryParams = new URLSearchParams(window.location.search) const refId = queryParams.get("referralID") const cookies = new Cookies(); let idCookie = cookies.get('referralID') if (!idCookie) { cookies.set('referralID', refId, { path: '/' }); }