You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React组件中API嵌套对象取值与Props传递异常:无法显示address和company字段

解决React组件传递嵌套对象Props的问题

嘿,我帮你定位到问题啦!你的代码里有两个关键小问题,导致address和company的内容没法正常显示,咱们一步步来修复:

问题1:拼写错误(最容易踩的坑!)

你把address这个单词写成了adress(少了一个d),不管是父组件传参还是子组件接收、渲染的时候都写错了,这直接导致找不到对应的属性,自然会报错。

问题2:Props传递逻辑错误

  • 父组件里你只传递了selectedUser.address.street(这是一个字符串值),但子组件却试图访问adress.street——相当于你给子组件递了一根剥好的香蕉果肉,却让它去剥香蕉皮,这肯定不对;
  • 同样的,company你传的是selectedUser.company.name(字符串),子组件却想访问company.name,这也是逻辑矛盾。

正确的做法是把整个嵌套对象传递给子组件,而不是单个字段的值,这样子组件就能自由访问对象里的属性了。

修正后的父组件代码

return (
  <>
    <header>
      <h1>Users list</h1>
    </header>
    <section>
      <ul>
        {users.map(user => (
          <li key={user.id}>
            <button onClick={() => setSelectedUser(user)}>{user.name}</button>
          </li>
        ))}
      </ul>
      {selectedUser && (
        <UserDetail 
          name={selectedUser.name} 
          username={selectedUser.username} 
          email={selectedUser.email} 
          address={selectedUser.address} {/* 修正拼写 + 传递整个address对象 */}
          phone={selectedUser.phone} 
          website={selectedUser.website} {/* 补上之前遗漏的website传参 */}
          company={selectedUser.company} {/* 传递整个company对象 */}
        />
      )}
    </section>
  </>
)

修正后的子组件代码

const UserDetail = ({name, username, email, address, phone, website, company}) => {
  return (
    <div>
      <h1>{name}</h1>
      <p>{username}</p>
      <p>{email}</p>
      {/* 修正拼写,现在可以正常访问嵌套属性了 */}
      <p>Address: {address.street}, {address.suite}, {address.city} {address.zipcode}</p>
      <p>{phone}</p>
      <p>{website}</p>
      <p>Company: {company.name}</p>
    </div>
  )
}
export default UserDetail

另外,我还帮你补上了父组件里遗漏的website传参,这样子组件里的website也能正常显示啦~

内容的提问来源于stack exchange,提问作者dannuzak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 23:08:10