2016-05-04 5 views
1

Из-за того, что я смог просветить из Интернета, эта функция должна работать. Однако babel не может скомпилировать его со ссылкой на недопустимый токен. Если я прокомментирую push-линии, все будет работать.Нажатие элементов на массив

Может ли кто-нибудь помочь мне с правильным синтаксисом для этого?

renderSuggestionText(highlightText, text) { 
    const fragments = []; 

    let buffer = text; 
    while (buffer.length > 0) { 
    const fragmentStart = text.toUpperCase().indexOf(highlightText.toUpperCase()); 
    if (fragmentStart > 0) { 
     fragments.push(<span>{buffer.substr(0, fragmentStart)}<span>); 
     fragments.push(<span className="bold">{buffer.substr(fragmentStart, highlightText.length)}</span>); 

     buffer = buffer.substr(fragmentStart + highlightText.length); 
    } else { 
     fragments.push(<span>{buffer}<span>); 
     buffer = ''; 
    } 
    } 

    return fragments; 
} 
+3

А какой маркер Бабель жалуется? '<'? В этом случае, похоже, вы не загрузили предикаты React для Babel. См. Https://facebook.gitub.io/react/docs/language-tooling.html#productionizing-precompiled-jsx –

ответ

2

Синтаксическая ошибка некоторых тегов span. Вы должны убедиться, что вы закроете все теги (<span></span>) Например:

} else { 
    fragments.push(<span>{buffer}<span>); 
    buffer = ''; 
} 

Бабель всегда будет выдавать ошибку, если вы не закрыть все теги. Должно быть что-то вроде «незаконченное JSX ..»

следует читать:

fragments.push(<span>{buffer}</span>); 
+0

grr. Глупая ошибка. Благодаря! – Steven

Смежные вопросы