Skip to main content

Variable

The variable() Factory

The Cog library is designed with simplicity in mind and thus provides a single API, the variable method (if we exclude the render method).

variable is a function that creates a new reactive variable. It is used to create a state variable within the state object of the Cog library that you can later use in your HTML. It takes a name and an initial value as arguments, and adds an entry to the state object with the given name and value.

const foo = variable("foo", "bar"); // state = { foo: "bar" }

The function returns an object with a set() method and a value getter, but also a setter in case you prefer to use it that way. It will also define a state variable "foo" that you can use in your HTML to retrieve it's value, like {{ foo }}.

set()

The set method allows you to update the value of the state variable from your JavaScript code. It takes a new value as an argument, and updates the state variable with this new value.

const foo = variable("foo", "bar");
foo.set("baz"); // state = { foo: "baz" }

When a state variable's value is updated using the set method, the UI is re-rendered, and any expressions referencing that variable are re-evaluated with the new value. This design allows the expressions in your HTML to automatically update whenever the state changes.

value (getter/setter)

The value getter allows you to retrieve the current value of the state variable from your JavaScript code.

const foo = variable("foo", "bar");
console.log(foo.value); // "bar"

The value setter allows you to update the value of the state variable directly. It's an alternative to the set() method.

const foo = variable("foo", "bar");
foo.value = "baz"; // state = { foo: "baz" }

Just like the set() method, when you change a state variable's value using the value setter, the UI is automatically re-rendered.