На странице руководства 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;
}
}
Он украшает только первый экземпляр текста, который соответствует регулярному выражению:
Я не совсем уверен, почему это происходит. Я пробовал другие циклы, но все они дают тот же результат, что и выше; Я бы предоставил CodePen, воспроизводящий проблему, но React и CodePen для моей ручки не работают.
Код доступен здесь