Как добавить <br> тег в реакции между двумя строками?

Я использую реакцию. Я хочу, чтобы добавить разрыв строки <br> между строками

"Нет результатов" и "Попробуйте другой поисковый запрос".

Я попробовал 'No results.<br>Please try another search term.'

но он не работает, мне нужно добавить <br> в html.

Есть идеи, как их решить?

   render() {
       let data = this.props.data;
       let isLoading = this.props.isLoading;
       let isDataEmpty = Object.entries(data).length === 0;
       let movieList = isLoading ? <Loader /> : isDataEmpty ? 'No results. Please try another search term.' :
           Object.entries(data).map((movie, index) => <MovieTile key={index} {...movie[1]} />);
       return (
           <div className='movieList'>{movieList}</div>
       );
   }

Ответ 1

Вы должны использовать JSX вместо строки:

<div>No results.<br />Please try another search term.</div>

Поскольку каждый jsx должен иметь 1 оболочку, я добавил оболочку <div> для строки.

Вот он в вашем коде:

render() {
   let data = this.props.data;
   let isLoading = this.props.isLoading;
   let isDataEmpty = Object.entries(data).length === 0;
   let movieList = isLoading ? <Loader /> : isDataEmpty ? <div>No results.<br />Please try another search term.</div> :
       Object.entries(data).map((movie, index) => <MovieTile key={index} {...movie[1]} />);
   return (
       <div className='movieList'>{movieList}</div>
   );
}

Ответ 2

перерыв текста в строку:

render() {
  ...
  <div>
    {this.props.data.split('\n').map( (it, i) => <div key={'x'+i}>{it}</div> )}
  </div>
  ...

Ответ 3

некоторые HTML-элементы, такие как <img> и <input> используют только один тег. Тег, который принадлежит элементу с одним тегом, не является открывающим тегом или закрывающим тегом; это самозакрывающийся тег. В JSX вы должны включить косую черту. Таким образом, удалить <br> и попробуйте <br/>

Ответ 4

Попробуйте с диапазоном

return (
           <div className='movieList'><span>{movieList}</span></div>
       );

Ответ 5

Вот как я обошел это. Пусть message будет prop/variable, в котором есть строка, содержащая разрывы строк, для отображения в HTML следующим образом:

message = 'No results.<br>Please try another search term.';
<div>
  {message}
</div>

Чтобы это работало, нам нужно использовать \n вместо тега break <br> и установить следующий css для элемента-оболочки этого сообщения следующим образом:

message = 'No results.\nPlease try another search term.';
<div className="msg-wrapper">
  {message}
</div>

CSS:

.msg-wrapper {
  white-space: pre-wrap;
}

ВЫХОД:

No results.
Please try another search term.

Ответ 6

Я просто хочу поделиться этой функцией, которую я использовал. Это похоже на Алексей Носиков ответ.

import React from 'react'

export const escapedNewLineToLineBreakTag = (string) => {
  return string.split('\n').map((item, index) => {
    return (index === 0) ? item : [<br key={index} />, item]
  })
}

Ответ 7

Вот как я решил проблему.

Реагировать Компонент

render() {
   message = 'No results. \n Please try another search term.';
   return (
       <div className='new-line'>{message}</div>
   );
}

CSS

.new-line {
  white-space: pre-line;
}

ВЫХОД

No results.
Please try another search term.

Ответ 8

Если вы находитесь в моей ситуации и не хотите добавлять CSS, вы можете сделать это:

render () {
...
return (
...
<Typography component="p">
...
{(contact.lastname)?<div>Hello {contact.firstname} {contact.lastname}</div>:''}
...
</Typography>
...
);
}