Маркированный список HTML для рендеринга React Native не центрирован по тексту

#django #react-native #django-ckeditor

Вопрос:

Я использую библиотеку react-native-render-html для отображения данных из фреймворка Django Rest, хранящихся RichTextUploadingField django-ckeditor в. Поскольку базовый стиль работает правильно, у меня проблема с <ul> тегом — текст не центрирован по кругу/квадрату/числу, как показано на рисунке. Я пробовал использовать renderersProps , как:

 <RenderHTML renderersProps={{ ul: { markerBoxStyle:{ paddingRight: 3, top: 5 }, markerTextStyle: { color: "red" } } }} />
 

Но это работает для определенного размера текста. Если я изменю размер текста в стиле в Django admin, элемент и текст снова не будут центрированы. Есть ли какой-либо вариант, как это исправить или в чем причина проблемы?

введите описание изображения здесь

Ответ №1:

Вы можете добавить пользовательский класс CSS только к неупорядоченным элементам списка. Затем примените свои стили к этому классу CSS.

 // this function goes through every list item in <ul> only and adds your custom class ('ul-li' in my case)
const onElement = (el) => {
  const { children, name } = el;
  if (name === 'ul' amp;amp; children amp;amp; children.length) {
      children.forEach(listItem => listItem.attribs = {class: 'ul-li'})
  }
}

// define your styles for your custom class
const classesStyles = {
  "ul-li": {
    lineHeight: '21px', // for me adjusting lineHeight did the job
  }
}

// in your JSX
<RenderHtml
  source={source}
  contentWidth={width}
  tagsStyles={tagsStyles}
  ... // other props you may have
  domVisitors={{onElement}} // first alter your html
  classesStyles={classesStyles} // then apply styles
/> 

Источники:
стили
классов один элемент