Je suis nouveau dans React, j'ai vu certains des problèmes similaires, mais je n'ai pas trouvé pourquoi cela se produit. Je reçois une "TypeError Uncaught: this.state.data.map n'est pas une fonction". Voici le code. S'il vous plaît, aidez à trouver quel est le problème.
class Audienses extends React.Component {
constructor (props)
{
super(props);
this.state = {
data: ''
};
this.loadFromServer = this.loadFromServer.bind(this);
this.childeDelete = this.childeDelete.bind(this);
this.childeEdit = this.childeEdit.bind(this);
}
loadFromServer () {
var xhr = new XMLHttpRequest();
xhr.open('get', this.props.url, true);
xhr.onload = function() {
var data = JSON.parse(xhr.responseText);
this.setState({ data: data });
}.bind(this);
xhr.send();
}
componentDidMount() {
this.loadFromServer();
}
render () {
var audienses = this.state.data.map((value, index) => (
<OneElement key={value.id} audience={value.audience} description={value.description} />
));
/* or like this
var audienses = this.state.data.map(function(s) {
<OneElement key={s.id} audience={s.audience} description={s.description} onDeleteClick={this.childeDelete} oneEditClick={this.childeEdit} />
}).bind(this);
*/
return
<div>
<h1>Audiences</h1>
<table id="services">
<tr>
<th>Audience</th>
<th>Description</th>
<th></th>
<th></th>
</tr>
<tbody>
{audienses}
</tbody>
</table>
</div>;
}
}
Votre état data
initial est String
., String
n'a pas de méthode .map
, vous devez modifier votre état initial de ''
à []
this.state = { data: [] };
.map
n'est pas applicable à un objet String. Envisagez de remplacer les "données" par un tableau. .map
est une méthode qui appelle une fonction sur chaque élément d'un tablea.
J'ai la même erreur dans react-redux.
le problème était lorsque j'ajoute un nouveau produit dans la page d'ajout/produit et que je clique sur le bouton de retour, le composant de la page d'accueil affiche cette erreur
renderItems = (products) => (
products.product ?
products.product.map(item => (
<ProductItem {...item} key = { item._id } />
))
: null
)
Je passe {} au lieu de [] du serveur de noeud
Donc, lorsque vous avez ce type d'erreur dans react-redux, vérifiez d'abord ce que vous passez du serveur dans ce champ et vérifiez également les réducteurs de ce composant particulier.