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

React项目选中书籍在新品页显示、控制台book未定义报错如何解决

问题1:选中书籍在新品到货页异常展示修复

出现原因:<BookDetails> 组件被放置在所有路由规则的公共渲染区域,未和首页路由绑定,只要 selectedBook 不为空,任意路由页面都会渲染该组件。
修复方式:将 <BookDetails> 迁移到首页专属的路由渲染逻辑内,修改主组件的路由部分代码如下:

<div>
  <Route path="/" exact render={()=> (
    <>
      <ComponentList
        books={this.state.books}
        selectedBookHandler={this.selectedBookHandler}
      />
      <BookDetails book={this.state.selectedBook}/>
    </>
  )} />
  <Route path="/new" exact component={NewBook}/>
  <Route path="/about-us" exact component={About}/>
</div>

调整后只有匹配到首页路由时,才会渲染书籍列表和选中的书籍详情,其他路由页面不会再展示选中书籍内容。

问题2:"Result showing book is not defined"错误修复

出现原因:ComponentList 组件遍历书籍列表时,点击事件给 selectedBookHandler 传参错误,你传入的是引入的 Book 组件对象,不是当前遍历到的书籍数据 item,后续变量取值不匹配就会抛出未定义错误。
修复方式:修改 ComponentList 内 Book 组件的事件绑定参数:

<Book
  bookName={item.bookName}
  writer={item.writer}
  publish={item.publish}
  key={item.id}
  selectedBookHandler={()=>props.selectedBookHandler(item)}
/>

修改后 selectedBook 存储的就是正确的书籍数据对象,后续取值逻辑不会再出现未定义错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:27:03