2017-05-06 2 views
1

Ich versuche, WYSIWYG-Editor zu machen, dass es möglich ist, über ausgewählten Text zu kommentieren.Wie generiert man den angepassten Schlüssel in slatejs?

Zuerst habe ich Draft.js verwendet. Es war jedoch nicht geeignet, um den mit Anmerkungen versehenen Text mithilfe des Schlüssels anzuzeigen, da der Entitätsschlüssel von Draft.js initiiert wurde, wenn Selektionen dupliziert wurden.

So fand ich die slatejs, während ich andere Bibliotheken in Verbindung mit diesem Zeug suchte.

Die Schieferjs hatten 'setKeyGenerator' utils. Ich konnte jedoch keine Informationen über 'setKeyGenerator' von slatejs finden. Dies ist nur eine Funktion wie unten beschrieben.

function setKeyGenerator(func) { 
    generate = func; 
} 

Und ich wusste nicht, wie Schlüssel generieren diese Funktion verwenden.

Dann weiß jemand, wie man diese Funktion verwendet oder haben Sie eine Idee für die Anmerkung ausgewählten Text?

+0

Sie könnten etwas wie "UuidV4" von https://www.npmjs.com/package/uuid geben – lux

+0

Danke, aber ich habe nicht einige Schlüssel-Generator gefunden ... – OH3VCI

Antwort

1

Wenn Sie versuchen, einen Schlüssel zu erzeugen, ein Element (Block) von referenzieren, hier ist was Sie tun können:

// A key to reference to block by (you should make it more unique than `Math.random()`) 
var uniqueKey = Math.random(); 

// Insert a block with a unique key 
var newState = this.state 
    .transform() 
    .insertBlock({ 
     type: 'some-block-type', 
     data: { 
      uniqueKey: uniqueKey 
     }, 
    }) 
    .apply(); 

// Get the block's unique Slate key (used internally) 
var blockKey; 
var { document } = self.state; 
document.nodes.some(function(node) { 
    if (node.data.get('uniqueKey') == uniqueKey) { 
     blockKey = node.key; 
    } 
}); 

// Update data on the block, using it's key to find it. 
newState = newState 
    .transform() 
    .setNodeByKey(blockKey, { 
     data: { 
      // Define any data parameters you want attached to the block. 
      someNewKey: 'some new value!' 
     }, 
    }) 
    .apply(); 

, dass Sie einen eindeutigen Schlüssel auf einem Einsatzblock einstellen können, und Dann hole die aktuellen SlateJs des Blocks key und aktualisiere den Block damit.

+0

Vielen Dank, Sneaksta! Ich habe dieses Problem jedoch gelöst, indem ich meinen eigenen Schlüsselgenerator erstellt habe. – OH3VCI

Verwandte Themen