Reactjsを剣道スプリッターで使用しようとしています。スプリッターには次のようなスタイル属性があります
style="height: 100%"
Reactjsでは、物事を正しく理解していれば、インラインスタイルを使用してこれを実装できます
var style = {
height: 100
}
ただし、Dustin Getz jsxutil を使用して、部分をもう少し分割し、独立したHTMLフラグメントを作成しようと試みています。これまでのところ、次のhtmlフラグメント(splitter.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>
そして、このhtmlを次のように参照するsplit.jsコンポーネント
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.
だから、明らかに正しくマッピングされていない。
誰かがこれを修正するために私に操縦を与えることができれば、私は本当に感謝しています。
これを行う必要があります:
var scope = {
splitterStyle: {
height: 100
}
};
そして、このスタイルを必要な要素に適用します。
<div id="horizontal" style={splitterStyle}>
あなたのコードでこれをやっています(これは間違っています):
<div id="horizontal" style={height}>
どこheight = 100
。
次のように、変数を使用せずにインラインでstyle
を設定することもできます。
style={{"height" : "100%"}}
または、
複数の属性の場合:style={{"height" : "100%", "width" : "50%"}}
documentation から次のことがうまくいかない理由はすぐにはわかりません。
<span style={font-size: 1.7} class="glyphicon glyphicon-remove-sign"></span>
しかし、完全にインラインで行う場合:
"em"
を省略すると、Reactはデフォルトを追加しますclass
はclassName
です正しい方法は次のようになります。
<span style={{fontSize: 1.7 + "em"}} className="glyphicon glyphicon-remove-sign"></span>
正しいより明確な方法は次のとおりです。
<div style={{"font-size" : "10px", "height" : "100px", "width" : "100%"}}> My inline Style </div>
次のアプローチにより、より簡単になります。
// JS
const styleObject = {
"font-size" : "10px",
"height" : "100px",
"width" : "100%"
}
// HTML
<div style={styleObject}> My inline Style </div>
インラインstyle
属性にはオブジェクトが必要です。したがって、それは{}
で記述され、デフォルトのリアクション標準の1つである{{}}
になります。