Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

191
Vistas
¿Cómo hago señales granulares que funcionen para propiedades de una clase pura completa?

Tengo una clase que guarda eventos de entrada y me permite consultar el estado.

 class Input { btn() { return this._btn } _release() { this._btn = -1 } _press() { this._btn = 0 } listen() { document.addEventListener('keydown', e => this._press()) document.addEventListener('keyup', e => this._release()) } update() { if (this._btn >= 0) this._btn++ } }

Yo uso esta clase así:

 let input = new Input() input.listen() function update_every_frame() { input.update() } function check_for_input() { if (input.btn() > 0) { console.log('here') } }

Entonces, usando una codificación de estilo sólido, quiero hacer una señal que cambie cada vez que se presione un botón de entrada:

 let [input, setInput] = createSignal(new Input(), { equals: false }) function update_every_frame() { setInput(input => { input.update(); return input }) } const check_for_input = () => { return input().btn() }

Ahora check_for_input es una propiedad reactiva que devuelve las pulsaciones de botón. Excepto que esta propiedad actualiza cada cuadro porque llamo input.update cada cuadro.

No quiero señales granulares a nivel de datos, donde contamine la clase de datos puros con señales. Porque quiero hacer una clase de datos y probarla independientemente de la biblioteca.

Entonces, ¿cómo hago señales granulares que funcionen para propiedades de una clase pura completa?

Editar

También, por ejemplo, ¿cómo creo señales o notas para una matriz, o una propiedad getter en una clase para que las señales se actualicen en consecuencia cuando la clase actualice sus propiedades?

 class Test { array: Array a: number = 0 get computed(): { return this.a < 4 ? 1 : 0 } update() { this.a = 10 } } let [instance, setInstance] = createSignal(new Test(), { equals: false }) let arraySignal = createMemo(() => instance().array) let computedSignal = createMemo(() => instance.computed)

¿Cómo se actualiza la señal computada en esta llamada de método?

 setInstance(instance => instance.update())
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Una forma de hacerlo es así:

 import {createMutable} from 'solid-js/store' import {createEffect} from 'solid-js' class Foo { // any properties here whatever = 123 constructor() { return createMutable(this) } } const f = new Foo createEffect(() => console.log(f.whatever)) f.whatever++ // reactive

o para mantener la clase realmente pura:

 import {createMutable} from 'solid-js/store' import {createEffect} from 'solid-js' class Foo { // any properties here whatever = 123 } const f = createMutable(new Foo) createEffect(() => console.log(f.whatever)) f.whatever++ // reactive

Dijiste que no quieres hacer una señal para cada propiedad, pero con classy-solid puedes hacerlo de una manera que todavía se siente como escribir una clase regular:

 import {reactive, signal} from 'classy-solid' @reactive class Foo { @signal whatever = 123 } const f = new Foo createEffect(() => console.log(f.whatever)) f.whatever++ // reactive
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda