スレートフレームワークのアップデート - テキストノードを削除するには、プロパティを残し

最近スレートフレームワークを更新し、中国のノードの変化のこの新しいバージョンのプロパティは、他の方法も調整されています。エディタの設定は、テキスト、太字、イタリックフォントの種類やリンクを変更します。以下に簡単にまとめて仕上げ。

テキストノードのプロパティの変更

プルリクエストで、テキストノードは、もはや持っていない.leavesプロパティを。代わりに、各テキストノードは、マークのユニークなセットを持っています。これは意味...

今テキストノードには葉にこのプロパティを持っていません意味マークのユニークなシリーズがあり、このプロパティを置き換えます。

  • 新しいマークはテキストノードの部分的な長さに追加されたとき、2つに分割されている。つのテキスト・ノードに、テキストノードの中間にテキストノードをマークの長さの部分を追加します。
  • 隣接するテキストノードが同じマークを持っている場合、それらがマージされている。隣接するテキストノードが同じマークを持っているとき、彼らがマージされます。

これは、データモデル内のいくつかの不要なネスティングを減少させ、結果として論理のいくつかの他の作品を簡単にします。

利点は、不必要なネストされたデータ・モデル、簡略化されたロジック部の他の断片を低減、です。


ブレイキング更新

1、もはやマーク操作がオフセットしないかの長さの特性をしています。テキストノードは、現在のマークの固有のセットが含まれているので、単一のマークに関連した操作は、ノードの分割をもたらすようにするために、それは意味がありません。代わりに、マークは、テキストノードの一部だけに追加されたときに、それがもたらすであろうsplit_node動作と同様add_markの動作。

マーク・オペレーションにはオフセットがないか、または長さの属性テキストノードがスプリットブレインにつながる、その後、操作に関連付けられたタグを独自のマークを、含まれているので、それは意味がありません。

2、テキストの操作は、もはやマークプロパティを持っていません。先に、マークの特定のセットにテキストを追加するために使用されました。しかし、これはもはや必要ではなく、テキストはマークが付加されているとき、それはになりますinsert_text操作と同様にadd_mark操作。

テキスト属性は、操作はありませんマークします

3、葉プロパティでText.createまたはText.createListを使用するとエラーになります。今ではテキストノードは、もはや葉を持っていない、あなたはに渡す必要がありますtext文字列とmarks新しいテキストノードを作成するときに、直接。(ただし、使用して全体の値を作成することができValue.create移行しながら、利便性のため、後方互換性のある方法をインチ)

キー:使用Text.createまたはText.createList方法、エラーは、プロパティの葉が含まれています あなたがテキストノードを作成するときに今すぐテキストノードが子ノードを残さない、あなたはテキストに直接渡された文字列やマークを必要としています。しかし、あなたはまだValue.createで全体の値を作成することができます。

// This works, although deprecated, which is the common case...
Value.create(oldValueJson)

// ...but this will error!
Text.create(oldTextJson)

4、Value.toJSONは葉なしで、新しいデータモデルの形式を返します。けれどもValue.fromJSONおよびValue.create非推奨モードで古い形式を許可し、呼び出し側はValue.toJSON新しいデータ形式を返します。あなたはまだ古いものを必要とする場合は、テキストノードを自分で変換するドキュメントツリーを反復処理する必要があります。

Value.toJSONはtoJSONを使用して新しい結果を返し、Value.fromJSONまたはValue.create許可形式が(葉が含まれていない)新しいデータモデルを返します。

5、 そして hyperscriptタグは現在、単一のテキスト・ノードを返す必要があります。 以前、彼らはより寛大だった、とテキストノードの配列を返す可能性があります。これは、ハードテストで明示的にすること、および特定の構成が不可能になりました。この新しい制限は、それが簡単にそれが特定のケースを作るやや冗長な場合でも、タグが返すかについて推論することができます。例えば:

今すぐすべてのテキストまたはハイパーテキストタグのラベルをマークし、単一のテキストノードを返します。

<paragraph>
  <b>a few <i>italic</i> and bold words.</b>
</paragraph>

今のように記述する必要があります。

<paragraph>
  <b>a few </b>
  <b><i>italic</i></b>
  <b> and bold words.</b>
</paragraph>

もう少し詳細な、しかし、あなたはあなたの結果の文書で受け取ることになります正確にどのように多くのテキストノード伝えやすいという利点を持ちます。そして、それは設定することができkey=、彼らはマップするので、直接マークタグに値を1:1ノードをテキストに。

6、HTMLのシリアライザはtext.leavesを削除するように更新されました。シリアル化のために、それはあなたがテキストノードの新しい形式で渡す必要です。そして、逆シリアル化のためには、新しい形式を返します。

シリアライザ機能は、方法をtext.leavesます。あなたは、新しいテキストノードを渡す必要があります

7、平野シリアライザはtext.leavesを削除するように更新されました。シリアル化のために、それはあなたがテキストノードの新しい形式で渡す必要です。そして、逆シリアル化のためには、新しい形式を返します。

平野シリアライザはtext.leavesを削除します

8、低レベルの値。*およびノード。*突然変異方法が変更されました。方法は操作そのものと同じ引数を取るので、これらの変更は、操作署名の変更を行います。例えば:

// Previously...
value.addMark(path, offset, length, mark)

// ...is now:
value.addMark(path, mark)

これらは、低レベルのメソッドであるため、この変更は、ユースケースの大半に影響を与えるべきではありません。

放棄された非推奨

葉のプロパティとTextノードでエディタを初期化することは推奨されていません。スレートのこの新しいバージョンでは、との新たな価値を創造しValue.create、古い葉のデータモデルでは、まだ移行における利便性のために許可されているが、それは今後のバージョンで削除されます。(ただし、低レベルを使用するとText.create、エラーがスローされます!)

初期設定エディタ、テキストの追加ノードは非推奨を残します。このバージョンでは、新しい方法は、古い葉ノードはまた、次のバージョンは削除されますに、このメソッドを使用することができます使用しています。これは、エラーをスローします。

// This works, although deprecated, which is the common case...
Value.create(oldValueJson)

// ...but this will error!
Text.create(oldTextJson)

おすすめ

転載: blog.csdn.net/weixin_41697143/article/details/89785596