1
votes

Comment passer des valeurs JSON entre le composant React

J'ai une question sur le passage des données json entre, j'ai là des composants PassTestData / ComA / ComB, les données sont importées dans PassTestData et je veux passer à ComA. Cependant, il y a un message d'erreur «TypeError: data.map n'est pas une fonction». Voici mes codes.

PassTestData

[
    {
      "A": "dataA",
      "B": "dataB",
      "C": "dataC",
      "D": "dataD",
      "E": "dataE"
    },
    {
      "A": "dataA_2",
      "B": "dataB_2",
      "C": "dataC_2",
      "D": "dataD_2",
      "E": "dataE_2"
    },
   ]

ComA

const ComB = props => {
  const { A, B, C, D, E } = props;
  return (
    <tr>
      <td>{A}</td>
      <td>{B}</td>
      <td>{C}</td>
      <td>{D}</td>
      <td>{E}</td>
    </tr>
  );
};

export default ComB ;


0 commentaires

3 Réponses :


1
votes

Définissez comme const data = props.data; ou const {data} = props;

const ComA = props => {
  const data = props.data;
  return (
    <Card>
      <CardTitle>
        <EmailViewHeader />
      </CardTitle>
      <Table hover>
        <thead>
          <tr>
            <th>
              Title A
            </th>
            <th>
              Title B
            </th>
            <th>
              Title C
            </th>
            <th>
              Title D
            </th>
            <th>
              Title E
            </th>
          </tr>
        </thead>
        <tbody>
          {data.map(row => (
            <ComB
              A={row.A}
              B={row.B}
              C={row.C}
              D={row.D}
              E={row.E}
            />
          ))}
        </tbody>
      </Table>
    </Card>
  );
};


2 commentaires

@LoveCat si la réponse est utile pour vous, veuillez accepter / voter pour cela


Je n'ai pas assez de réputation, je vous en donnerai plus tard, merci beaucoup!



0
votes

Convertissez votre json en objet et passez-le ensuite en accessoires. JSON est une chaîne et la fonction map n'y est pas définie.

const ComA = props => {
  const data = props.data;
  return (
    ....
  );
};
export default ComA

Et dans le composant A, passez les données d'accessoires comme ceci.

Import data from ‘../data.json’
const PassTestData = () => {
 let _data = JSON.parse(data);  
  return (
    <div>
      < ComA date={_date} />
    </div>
  );};


0 commentaires

0
votes

Vous devez définir const data = props; comme:

const data = props.data;

OU

const { data } = props;

TypeError: data.map n'est pas une fonction est renvoyé car props est un objet et non un tableau.

Array.prototype.map attend un tableau.

p >


1 commentaires

@LoveCat Heureux de vous aider! Veuillez accepter cette réponse si elle a résolu votre question. Instructions ici .