Skip to content

Historias de Funcion

Las historias de funcion son el tipo más básico de historias; son funciones que UI Labs ejecutará al montar la historia.

Estas son utilizadas en Hoarcekat

Cómo Montar una Historia

Estas funciones recibirán un target como un parametro, el cual es el Frame donde la historia se debe crear.

lua
function story(target: Frame)
   -- Crea tu historia aquí dentro de "target"
end

return story
ts
function story(target: Frame) {
	// Crea tu historia aquí dentro de "target"
}

export = story;

Limpieza

Después de ejecutar una función, esta debe regresar una función de limpieza que será ejecutada cuando la historia sea desmontada.

lua
function story(target: Frame)
   -- Crea tu historia aquí dentro de "target"

   return function()
      -- Limpia tu historia aquí
   end
end

return story
ts
function story(target: Frame) {
	// Crea tu historia aquí dentro de "target"

	return () => {
		// Limpia tu historia aquí
	};
}

export = story;

Posibles Errores

La función de limpieza no puede ejecutarse si la función principal da errores. Si la historia necesita limpiar algo, es posible que sea necesario Reiniciar Studio para evitar fugas de memoria e instancas no destruidas.

UI Labs te advertirá sobre esto

lua
local function story(target)
   local newElement = Roact.createElement("TextLabel", {})
   local handle = Roact.mount(newElement, target) --Fue montado, necesita limpiar

   error("error") --Este error no permitirá que la función de limpieza sea regresada
   return function()
      --Jamás se desmontará
      Roact.unmount(handle)
   end
end

return story

Ejemplos

React / Roact
lua
local function story(target)
   local component = Roact.createElement("Frame", {})
   local root = Roact.mount(component, target)

   return function()
      Roact.unmount(root)
   end
end

return story
tsx
function story(target: Frame) {
	const component = <frame />;
	Roact.mount(component, target);

	return () => {
		Roact.unmount(component);
	};
}

export = story;
Fusion
lua
local function story(target: Frame)
   local component = Fusion.New "Frame" {
      Parent = target,
   }

   return function()
      component:Destroy()
   end
end

return story
ts
function story(target: Frame) {
	const component = Fusion.New("Frame")({
		Parent: target,
	});

	return () => {
		component: Destroy();
	};
}

export = story;
Creando Instancias
lua
local function story(target: Frame)
   local component = Instance.new("Frame")
   component.Parent = target

   return function()
      component:Destroy()
   end
end

return story
ts
function story(target: Frame) {
	const component = new Instance("Frame");
	component.Parent = target;

	return () => {
		component.Destroy();
	};
}

export = story;