Черновик. js: стратегия Decorator не будет украшать все экземпляры текста, сопоставленные с регулярным выражением, если только она не имеет бесконечности, в то время как l oop? - PullRequest
0 голосов
/ 13 февраля 2020

На странице руководства CompositeDecorators Draft. js использует время от l oop до l oop, предположительно, во всех текстах экземпляров, соответствующих предоставленному регулярному выражению (в случае примера, или хэштегом или упоминанием).

Я повторил стратегию, представленную в примере, предполагая, что она даст те же результаты, что и в в этом CodePen . Однако вместо этого оно зациклено. При применении другого l oop, такого как это:

function hashtagRegex(contentBlock, callback) {
  let text = contentBlock.getText();
  let hashtags = [];
  let words = text.split(" ");

  for (let i = 0; i < words.length; i++) {
    const word = words[i];

    if (word.startsWith("#")) {
      hashtags.push(word);
    }
  }

  let iteration = 0;

  while (hashtags.length != 0) {
    let start = text.indexOf(hashtags[iteration]);
    callback(start, start + hashtags[iteration].length);
    iteration++;
    if (hashtags.length >= iteration) break;
  }
}

Он украшает только первый экземпляр текста, который соответствует регулярному выражению:

enter image description here

Я не совсем уверен, почему это происходит. Я пробовал другие циклы, но все они дают тот же результат, что и выше; Я бы предоставил CodePen, воспроизводящий проблему, но React и CodePen для моей ручки не работают.

Код доступен здесь

...