J'utilise React JS pour le rendu du contenu HTML. Le problème est que je ne suis pas en mesure de comprendre une section de code particulière.
Si vous pouvez voir un exemple de base d’une liste à faire à partir du lien ci-dessous http://facebook.github.io/react/
<script type='text/jsx'>
/** @jsx React.DOM */
var TodoList = React.createClass({
render: function(){
var createItem = function(itemText) {
return <li>{itemText}</li>;
};
return <ul>{this.props.items.map(createItem)}</ul>;
}
});
var TodoApp = React.createClass({
getInitialState: function(){
return {items:[], text: ''}
},
onChange: function(e)
{
this.setState({text: e.target.value});
},
handleSubmit: function(e)
{
e.preventDefault();
var nextItems = this.state.items.concat([this.state.text]);
var nextText = ''
this.setState({items: nextItems, text: nextText});
},
render:function(){
return (
<div>
<h3>ToDo List</h3>
<TodoList items={this.state.items}/>
<form onSubmit={this.handleSubmit}>
<input type="text" onChange={this.onChange} value={this.state.text}/>
<button>Add #{this.state.items.length+1}</button>
</form>
</div>
)
}
});
React.render(<TodoApp />, document.getElementById('toDoListApp'));
</script>
Je ne suis fondamentalement pas en mesure de comprendre ce que fait map et comment fonctionnent les paramètres de création d’éléments. Quelqu'un pourrait-il fournir des détails sur le même sujet:
var TodoList = React.createClass({
render: function(){
var createItem = function(itemText) {
return <li>{itemText}</li>;
};
return <ul>{this.props.items.map(createItem)}</ul>;
}
});
Merci, Ankit
map
n'est pas une fonctionnalité de React.js. Vous pouvez appeler cette fonction sur le tableau de votre choix. Vous devriez consulter sa documentation sur MDN pour cela.
Fondamentalement, map sert à convertir un tableau en un autre tableau avec des éléments modifiés . Par exemple:
[1,2,3].map(function(item){
return item+1;
})
retournerait un nouveau tableau comme ceci: [2,3,4]
Dans votre exemple, map est utilisé pour convertir un tableau avec des éléments de type "chaîne" en un tableau d'éléments React.DOM.li.
L’auteur de votre exemple aurait également pu le faire comme ceci
var TodoList = React.createClass({
render: function(){
return <ul>{this.createItems(this.props.items)}</ul>;
},
createItems: function(items){
var output = [];
for(var i = 0; i < items.length; i++) output.Push(<li>{items[i]}</li>);
return output;
}
});
props
est un objet contenant des propriétés passées d'un parent à un composant enfant.
Donc props.items
est la propriété nommée items
qui est un tableau.
props.item.map()
mappe la items
arrary à un tableau de li
s.
Il faudra this.props.items
tableau, transmettre chaque élément à la fonction createItem
, puis renvoyer un tableau des valeurs renvoyées de chaque appel.
Spécifiquement pour ce code, si vous aviez ceci dans this.props.items
:
["Item 1 text", "Item 2 text", ..]
Vous obtiendrez quelque chose comme ça de l'appel de la carte:
["<li>Item 1 text</li>","<li>Item 2 text</li>",..]