es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Accede al almacenamiento de Redux dentro de la ruta de la API de Next.js.

Estoy tratando de acceder a mi almacén redux pero useAppSelector es un hook y no me permite usar hooks.

Llamada inválida al hook. Los hooks solo se pueden llamar dentro del cuerpo de un componente de función.

export default async function handler(req, res) {
  if (req.method === 'POST') {
    try {
      const { cartItems: cart } = useAppSelector((state) => state.cart)
      // Crear sesiones de pago desde los parámetros del cuerpo.
      const session = await stripe.checkout.sessions.create({
        line_items:
          [
          {
            // Proporciona el ID de precio exacto (por ejemplo, pr_1234) del producto que deseas vender
            price: 'price_1KCZvuJXbqMuWcYwIKesDoXE',
            quantity: 1,
          }, {
            // Proporciona el ID de precio exacto (por ejemplo, pr_1234) del producto que deseas vender
            price: 'price_1KCZvuJXbqMuWcYwIKesDoXE',
            quantity: 1,
          },
          ]
        ,
        mode: 'payment',
        success_url: `${req.headers.origin}/?success=true`,
        cancel_url: `${req.headers.origin}/?canceled=true`,
      });
      res.redirect(303, session.url);
    } catch (err) {
      res.status(err.statusCode || 500).json(err.message);
    }
  } else {
    res.setHeader('Allow', 'POST');
    res.status(405).end('Método no permitido');
  }
}

¿Cómo puedo acceder a mi carrito sin usar un hook?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Si no puedes utilizar hooks, puedes acceder a la tienda utilizando el método store.getState(). Primero necesitas importar la instancia de tu tienda en el archivo donde estás intentando acceder a tu tienda de redux.

    Por ejemplo:

    import { store } from '../store';
    
    export default async function handler(req, res) {
      if (req.method === 'POST') {
        try {
          const { cartItems: cart } = store.getState().cart;
          // Create Checkout Sessions from body params.
          const session = await stripe.checkout.sessions.create({
            line_items:
              [
                {
                  // Proporciona el ID de precio exacto (por ejemplo, pr_1234) del producto que deseas vender
                  price: 'price_1KCZvuJXbqMuWcYwIKesDoXE',
                  quantity: 1,
                }, {
                  // Proporciona el ID de precio exacto (por ejemplo, pr_1234) del producto que deseas vender
                  price: 'price_1KCZvuJXbqMuWcYwIKesDoXE',
                  quantity: 1,
                },
              ]
            ,
            mode: 'payment',
            success_url: `${req.headers.origin}/?success=true`,
            cancel_url: `${req.headers.origin}/?canceled=true`,
          });
          res.redirect(303, session.url);
        } catch (err) {
          res.status(err.statusCode || 500).json(err.message);
        }
      } else {
        res.setHeader('Allow', 'POST');
        res.status(405).end('Method Not Allowed');
      }
    }
    

    Ten en cuenta que este método solamente debe ser usado para código del lado del servidor, ya que puede causar problemas con el renderizado del lado del servidor cuando se utiliza en código del lado del cliente.

Comments are closed.