Использовать настраиваемое свойство внешнего стиля в React

#excel #reactjs

#excel #reactjs

Вопрос:

В моем приложении React я экспортирую таблицу html в Excel, сохраняя отображаемый HTML-код (который Excel знает, как открыть) в файл. Я также пытаюсь установить свойство стиля ‘mso-number-format’ для каждого <td> , чтобы указать Excel, какой числовой формат использовать для каждой ячейки. Однако React не нравится этот код:

 <td style={{ 'mso-number-format': '\@' }}
  

В консоли он регистрирует:

 Unsupported style property mso-number-format. Did you mean msoNumberFormat? Check the render method of `ComponentX`.
  

Есть ли способ обойти это, не обходя DOM и вручную сделать что-то вроде:

 node.setAttribute('style', 'mso-number-format: \@')
  

Комментарии:

1. есть какие-либо обновления по этой проблеме?

Ответ №1:

Атрибуты стилей в React JSX записываются в нотации camelCase, а не так, как вы определили. Определите его следующим образом

 <td style={{ 'msoNumberFormat': '@' }}>
  

В документах в react говорится следующее

В React встроенные стили не задаются в виде строки. Вместо этого они задаются с помощью объекта, ключ которого является версией имени стиля в формате camelCased, а значение — значением стиля, обычно строкой

Ключи стиля имеют формат camelCase, чтобы быть совместимыми с доступом к свойствам на DOM-узлах из JS (например, node.style.BackgroundImage). Префиксы поставщиков, отличные от ms, должны начинаться с заглавной буквы. Вот почему WebkitTransition имеет заглавную букву «W».

Документы по встроенным стилям

как предлагает вам react, и это решит вашу проблему.

Также я думаю, что это должно быть @ вместо \@ форматирования текста.

Вы также можете попробовать это как

 var styles = {
    msoNumberFormat: '@'
}

<td style={styles}>
  

Комментарии:

1. Да, я пробовал <td style={{ ‘msoNumberFormat’: ‘\@’ }}> и предупреждение исчезает, но стиль не отображается в <td>:s

2. Попробуйте редактировать и посмотрите, отображается ли оно в вашем элементах css при попытке проверить элемент. Также я думаю, что вместо @ должен быть один @ \@

3. Не могу заставить его летать, смотрите здесь, Как color: red применяется к ячейкам, но не mso-number-format: jsfiddle.net/pichdude/dce0ygu2/2