2017-05-06 16 views
1

私は選択されたテキストについて注釈を付けることが可能であることをWYSIWYGエディタにしようとしています。slatejsでカスタマイズしたキーを生成する方法は?

まず、Draft.jsを使用しました。しかし、Draft.jsのエンティティキーは選択項目が複製されたときに開始されたので、キーを使用して注釈付きテキストをポイントするのには適していませんでした。

私はslatejsを見つけましたが、他のライブラリも検索していました。

slatejsには、「setKeyGenerator」ユーティリティがありました。しかし、私はslatejsの 'setKeyGenerator'に関する情報を見つけることができませんでした。このユーティリティは以下のような関数を設定するだけです。

function setKeyGenerator(func) { 
    generate = func; 
} 

この関数を使用してキーを生成する方法はわかりませんでした。

誰かがこの関数の使い方を知っているか、注釈の選択テキストを知っていますか?あなたは、インサートブロックに一意のキーを設定することができます

// 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(); 

、および:

+0

https://www.npmjs.com/package/uuidから「uuidV4」のようなものを渡すことができました – lux

+0

ありがとうございますが、私はいくつかの鍵ジェネレータを見つけられませんでした。 – OH3VCI

答えて

1

あなたがすることによって要素(ブロック)を参照するためのキーを生成しようとしている場合は、ここで何ができるかですブロックの実際のSlateJs keyを取得し、そのブロックを更新します。

+0

ありがとう、Sneaksta!しかし、私はこの問題を独自のキージェネレータのutilとして作成しました。 – OH3VCI

関連する問題