J'essaie d'utiliser Reactjs avec un séparateur de kendo. Le séparateur a un attribut de style comme
style="height: 100%"
Avec Reactjs, si j’ai bien compris les choses, cela peut être implémenté en utilisant un style inline
var style = {
height: 100
}
Cependant, j'utilise aussi Dustin Getz jsxutil pour tenter de scinder un peu plus les choses et d’avoir des fragments HTML indépendants. Jusqu'ici, j'ai le fragment html suivant (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>
et un composant splitter.js qui référence ce code HTML comme suit
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;
}
});
}
)
Maintenant, quand je lance ceci, je peux voir la hauteur correctement si je le mets en tant que contenu. Cependant, quand il s'exécute en tant que propriétés de style, j'obtiens une erreur.
The `style` prop expects a mapping from style properties to values, not a string.
Donc, évidemment, je ne l'ai pas encore bien cartographié.
Je serais vraiment reconnaissant si quelqu'un pouvait me guider pour corriger cela.
Vous devez faire ceci:
var scope = {
splitterStyle: {
height: 100
}
};
Et appliquez ensuite ce style aux éléments requis:
<div id="horizontal" style={splitterStyle}>
Dans votre code, vous procédez comme suit (ce qui est incorrect):
<div id="horizontal" style={height}>
Où height = 100
.
Vous pouvez également essayer de définir style
inline sans utiliser de variable, comme ceci:
style={{"height" : "100%"}}
ou,
pour plusieurs attributs: style={{"height" : "100%", "width" : "50%"}}
Ce n'est pas immédiatement évident d'après documentation pourquoi ce qui suit ne fonctionne pas:
<span style={font-size: 1.7} class="glyphicon glyphicon-remove-sign"></span>
Mais en le faisant entièrement en ligne:
"em"
class
est className
La manière correcte ressemble à ceci:
<span style={{fontSize: 1.7 + "em"}} className="glyphicon glyphicon-remove-sign"></span>
Manière correcte et plus claire est:
<div style={{"font-size" : "10px", "height" : "100px", "width" : "100%"}}> My inline Style </div>
C'est plus simple en suivant l'approche:
// JS
const styleObject = {
"font-size" : "10px",
"height" : "100px",
"width" : "100%"
}
// HTML
<div style={styleObject}> My inline Style </div>
Inline style
attribut attend objet. D'où son écrit en {}
, et cela devient double {{}}
_ comme on le fait pour les normes par défaut.