首页 > 解决方案 > 将道具传递给子组件不起作用

问题描述

我正在进行 axios 调用并接收一些数据,数据如下数据是 json 对象数组

[
  {
    "like": 5,
    "_id": "608822d2c6d24d5a2c9b203e",
    "author": "vineeth",
    "punch": "punch1",
    "__v": 0
  },
  {
    "like": 11,
    "_id": "608977a366625258dc62a704",
    "author": "vineeth nice boy",
    "punch": "punch by vineeth",
    "__v": 0
  }
]

我在数据数组上循环,并使用 map 将每个数据元素发送到子组件,它预期会呈现这个数据。但我无法在子组件中查看/显示数据。

家长

import { useSelector} from 'react-redux';
import Punch from './punch/Punch'
import './Punches.css';
const Punches = ()=> {
  const punches = useSelector((state)=> state.punches);
  console.log(punches);
  return (
    <div className="Punches">
      <div className="card-group">
          {
            punches.map((punch)=>{
              <Punch punch={punch}></Punch>
            })
          }
      </div>
    </div>
  );

  }
export default Punches;

孩子


import './Punch.css';
const Punch =  ({punch})=> {
  console.log(punch);
  return (
      <div className="Punch">
        <h1>{punch}</h1>
      </div>

  )
   
}

export default Punch;

标签: reactjs

解决方案


您的代码应该是:

{
  punches.map((punch) => (<Punch key={punch._id} punch={punch}></Punch>))
}

如果为箭头函数添加花括号{},则必须显式返回。

<div className="Punch">
  <h1>{punch.punch}</h1>
</div>

punch是一个 JS 对象,react 不知道如何将它作为一个整体呈现。

编辑 awesome-ganguly-w6fxy


推荐阅读