Wie mutiere ich einfach das Array innerhalb eines Signals

Eguneys

Dies ist ein funktionierendes Beispiel mit einem Problem. Ich möchte ein vorhandenes Array in ein Signal spleißen und es zurückgeben, um es aktualisiert zu sehen. Aber es funktioniert nicht. Wie mutiere ich einfach das Array innerhalb eines Signals? Ich möchte keine neuen Arrays erstellen, sondern nur einen einfachen Spleiß. In den Dokumenten gibt es kein Beispiel zum Mutieren eines Arrays.

import {  render } from 'solid-js/web';
import { createSignal, createEffect } from 'solid-js'

function HelloWorld() {
  let [a, setA] = createSignal([])

  setTimeout(() => 
  setA(a => {
    a.splice(0, 0, 'hello')
    // this logs as requested if I uncomment this
    //return ['hello']
    return a
  }))


  createEffect(() => {
    console.log(a())
  })
  return <div>Hello World!</div>;
}

render(() => <HelloWorld />, document.getElementById('app'))
Nick

Das Solid-Tutorial empfiehlt dringend die Unveränderlichkeit :

Solid empfiehlt dringend die Verwendung flacher, unveränderlicher Muster zum Aktualisieren des Zustands. Durch die Trennung von Lese- und Schreibvorgängen behalten wir eine bessere Kontrolle über die Reaktivität unseres Systems, ohne Gefahr zu laufen, Änderungen an unserem Proxy aus den Augen zu verlieren, wenn sie durch Schichten von Komponenten geleitet werden.

Ein unveränderlicher Weg, um das zu erreichen, was Sie anstreben, könnte etwa so aussehen:

setA(a => ['hello', ...a])

Wenn Sie jedoch feststellen, dass Sie das Signal mutieren müssen , können Sie im createSignalOptionsobjekt angeben, wie Solid feststellt, ob ein Signal aktualisiert wurde . Standardmäßig werden Signaländerungen durch referentielle Gleichheit mit dem ===Operator verglichen. Sie können Solid anweisen , Abhängigkeiten immer erneut auszuführen, nachdem der Setter aufgerufen wurde, indem Sie Folgendes equalsfestlegen false:

let [a, setA] = createSignal([], { equals: false });

Oder Sie können eine Funktion übergeben, die die Werte und des Signals übernimmt und ein previouszurückgibt :nextboolean

let [a, setA] = createSignal([], { equals: (prev, next) => {
  if (/* dependents should run */) {
    return false;
  }
  // dependents shouldn't run
  return true;
} });

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie mutiere ich eine Variable im Array?

Wie kann ich einfach das Ergebnis eines bestimmten Anforderungsaufrufs ersetzen?

Wie zeige ich eine Eigenschaft eines Objekts an, das in einem Array innerhalb eines Vorlagenattributs verschachtelt ist?

Wie mutiere ich Elemente eines Vektors während der Iteration?

Wie ordne ich ein Array zu, das sich innerhalb eines Arrays befindet? (reagiert)

Wie kann ich innerhalb eines std :: string auf das char-Array zugreifen?

Wie mutiere ich ein Array in einem Wörterbuch?

Wie füge ich ein Objekt zu einem Array hinzu, das ein Wert eines Schlüssels innerhalb eines Objekts ist?

Wie verweise ich auf das Objekt "dieses" innerhalb eines Ereignisblocks?

Wie verwende ich das asynchrone Warten innerhalb eines Ereignisses?

Wie ersetze ich das Namensattribut innerhalb eines Elements in JQuery?

Wie mutiere ich nach Gruppen?

Wie mutiere ich einen STVector?

Wie mutiere ich einen DataFrame?

Wie kann ich in RStudio beim Erstellen eines Dia-Decks mit RMarkdown das Thema einfach ändern?

Wie kann ich das Senden der Seite beim Senden eines Formulars einfach verhindern?

Wie greife ich auf ein Array innerhalb eines Objekts zu und das Array selbst enthält Objekte im Winkel?

Vue.js - Wie zeige ich ein Objekt in einem Array an, dass sich das Array innerhalb eines Objekts befindet?

Wie mutiere ich einen Wert in tibble in einen anderen Wert innerhalb desselben tibble?

Wie greife ich auf ein Array zu, das innerhalb einer Funktion außerhalb eines Objekts in JavaScript aufgerufen wird?

Wie erhalte ich mit Moongoose Zugriff auf das gesamte Unterdokument (Array von Objekten innerhalb eines Arrays von Objekten)?

Wie entferne ich ein Array innerhalb eines Arrays in mongoDB?

Wie bekomme ich ein Array innerhalb eines Arrays?

Wie greife ich auf ein Array innerhalb eines Arrays zu?

Wie filtere ich ein Array innerhalb eines Arrays von Objekten?

Wie schneide ich Array-Elemente innerhalb eines Arrays?

Wie wickle ich ein Array innerhalb eines Objekts in MongoDB ab?

Wie greife ich auf ein Array innerhalb eines Arrays zu?

Wie initialisiere ich ein dynamisch zugewiesenes Array innerhalb eines Klassenkonstruktors?

TOP Liste

  1. 1

    TypeAhead.js zeigt keine Ausgangsschienen an?

  2. 2

    Wie lade ich eine Datei herunter, ohne den Typ oder Dateinamen zu kennen?

  3. 3

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  4. 4

    Pandas rufen einen Wert basierend auf dem Index ab

  5. 5

    Unity Build-Fehler: Der Name 'EditorUtility' ist im aktuellen Kontext nicht vorhanden

  6. 6

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  7. 7

    Interpolieren Sie mit Python die 2D-Matrix entlang der Spalten

  8. 8

    numpy: Berechnen Sie die Ableitung der Softmax-Funktion

  9. 9

    Warum funktioniert das Umgebungslicht in diesem Beispiel nicht?

  10. 10

    spring-data-jpa: ORA-01795: Die maximale Anzahl von Ausdrücken in einer Liste beträgt 1000

  11. 11

    Wie verwende ich Format-Table ohne Abschneiden von Werten?

  12. 12

    MongoDB eingebettetes Dokument unterscheiden und filtern

  13. 13

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  14. 14

    Wie vermeide ich, dass die gesamte App neu geladen wird, wenn Nav.Link von React-Bootstrap verwendet wird?

  15. 15

    Aktualisieren des Werts im Json-Objekt in Python

  16. 16

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  17. 17

    Python gibt einen Fehler aus, dass eine Datei nicht vorhanden ist, wenn dies eindeutig der Fall ist

  18. 18

    Warum funktioniert Phantomjs nicht mit dieser Site?

  19. 19

    Docker bleibt beim Ausführen von time.sleep (1) in einer Python-Schleife hängen

  20. 20

    Überprüfen Sie, ob der ausgewählte Wert 'YES' ist, wenn ja, aktivieren Sie ein Steuerelement mit Javascript

  21. 21

    Deklarieren einer nicht initialisierten Variablen in der Klassendefinition in Python

heißlabel

Archiv