Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

192
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda