Source: templates/SetVariable.js

import React, { useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { appActions, processOptions, useVariables } from "../..";
import objectPath from "object-path";

const safeEval = require('safe-eval-2')

/**
 * Componente que al renderizarse setea variables en memoria temporal (vía redux).
 * @name Reactor.Components.Templates.SetVariable
 * @param {string!} variable Nombre de la variable que se va a modificar o crear, acepta path de la libreria object-path-immutable mediante el método set()
 * @param {string} [context = "global"] Nombre del contexto que contiene o va a contener la variable, si se omite el contexto sera "global"
 * @param {string!} data Valor que se asignará a la variable, si comienza con "ev|" evaluará con safe-eval-2 el resultado de lo que este despues de la pipa
 * @param {BooleanString} storage Si es "true" la variable se guarda en LocalStorage
 * @class
 * @example
<set_variable variable="Nombre" context="Datos" data="Pepito" storage="true"></set_variable>
 */

export const SetVariable = ({variable, context = "global", data, children, storage}) => {
  
  const variables = useVariables({variable, context, storage});

  useEffect(()=>{
    //console.log({variable, context, storage, data})
    variables.setData(data)
  }, [data]);

  return <>{children}</>;

}