Reactjs-правильная настройка встроенных стилей
Я пытаюсь использовать Reactjs с кендо сплиттер. Разделитель имеет атрибут стиля, как
style="height: 100%"
С Reactjs, если я правильно понял, это может быть реализовано с помощью встроенного стиля
var style = {
height: 100
}
однако, я также использую Dustin Getz jsxutil чтобы в попытке разделить вещи на части немного больше и иметь независимые фрагменты html. До сих пор у меня есть следующий фрагмент html (расщепитель.html)
<div id="splitter" className="k-content">
<div id="vertical">
<div>
<p>Outer splitter : top pane (resizable and collapsible)</p>
</div>
<div id="middlePane">
{height}
<div id="horizontal" style={height}>
<div>
<p>Inner splitter :: left pane</p>
</div>
<div>
<p>Inner splitter :: center pane</p>
</div>
<div>
<p>Inner splitter :: right pane</p>
</div>
</div>
</div>
<div>
<p>Outer splitter : bottom pane (non-resizable, non-collapsible)</p>
</div>
и сплиттер.JS компонент, который ссылается на этот html следующим образом
define(['react', 'external/react/js/jsxutil','text!internal/html/splitter.html'],
function(React, jsxutil, splitterHtml) {
'use strict';
console.log('in app:' + splitterHtml);
return React.createClass({
render: function () {
var scope = {
height: 100
};
console.log('about to render:' + scope.height);
var dom = jsxutil.exec(splitterHtml, scope);
console.log('rendered:' + dom);
return dom;
}
});
}
)
теперь, когда я запускаю это, я могу видеть высоту правильно, если я положил его в качестве содержимого. Однако, когда он выполняется как свойства стиля, я получаю ошибку
The `style` prop expects a mapping from style properties to values, not a string.
поэтому я, очевидно,не совсем правильно его сопоставил.
Я был бы очень благодарен, если бы кто-то мог дать мне руль на исправление этого.
3 ответа:
вы должны сделать это:
var scope = { splitterStyle: { height: 100 } };
а затем применить этот стиль к необходимым элементам:
<div id="horizontal" style={splitterStyle}>
в вашем коде вы делаете это (что неверно):
<div id="horizontal" style={height}>
здесь
height = 100
.
вы также можете попробовать параметр
style
inline без использования переменной, например:
style={{"height" : "100%"}}
илидля нескольких атрибутов:
style={{"height" : "100%", "width" : "50%"}}
Это не сразу видно из документация почему не работает следующее:
<span style={font-size: 1.7} class="glyphicon glyphicon-remove-sign"></span>
но когда это делается полностью встроенный:
- вам нужны двойные фигурные скобки
- вам не нужно ставить свои значения в кавычки
- React добавит некоторые значения по умолчанию, если вы опустите
"em"
- не забудьте имена стилей camelCase, которые имеют тире в CSS-например, размер шрифта становится размер шрифта:
class
- этоclassName
правильный путь выглядит так:
<span style={{fontSize: 1.7 + "em"}} className="glyphicon glyphicon-remove-sign"></span>