Action

Version: 1.0.0

Uma Action no deco.cx é uma função em typescript que modifica dados dentro da aplicação. As Action são acionadas por interações específicas do usuário ou eventos e são responsáveis por atualizar o estado da aplicação de acordo. Ao contrário dos Loaders, que buscam dados de fontes externas, as Action concentram-se em modificar os dados já presentes na aplicação. Elas podem realizar operações como atualização, criação ou exclusão de dados com base na lógica especificada. As Action proporcionam controle preciso e flexibilidade sobre a mutação de dados e integram-se perfeitamente a outros blocos, como os Loaders, para permitir um fluxo contínuo de dados na aplicação.

As Action, assim como os Loaders, são implementadas como funções em typescript e estão localizadas na pasta /actions/ do seu projeto. Elas podem ser invocadas em resposta a interações do usuário, envios de formulários ou qualquer outro gatilho definido. Ao encapsular a lógica de mutação de dados nas Action, os desenvolvedores podem gerenciar e rastrear as alterações feitas no estado da aplicação, proporcionando aos usuários experiências dinâmicas e interativas.

Código de exemplo

Esta é a implementação da Action newsletter/subscribe.ts:

import { AppContext } from "../../mod.ts";

export interface Props {
  email: string;
  name?: string;
  page?: string;
  part?: string;
  campaign?: string;
}

const action = async (
  props: Props,
  _req: Request,
  ctx: AppContext,
): Promise<void> => {
  const { vcsDeprecated } = ctx;
  const form = new FormData();
  const {
    email,
    name = "",
    part = "newsletter",
    page = "_",
    campaign = "newsletter:opt-in",
  } = props;

  form.append("newsletterClientName", name);
  form.append("newsletterClientEmail", email);
  form.append("newsInternalPage", page);
  form.append("newsInternalPart", part);
  form.append("newsInternalCampaign", campaign);

  await vcsDeprecated["POST /no-cache/Newsletter.aspx"]({}, {
    body: form,
  });
};

export default action;

Fonte

Leitura recomendada

Was this page helpful?
Can't find what you're looking for? Spot an error in the documentation? Get in touch with us on our Community Forum
Continue reading