我有一个 React 有声读物搜索应用程序。它按作者姓氏从 Librivox 获取数据并显示书籍列表。列表中的每个项目都有一个链接,该链接依次转到单独的完整图书数据组件,该组件显示该特定图书(或用户从列表中选择的任何图书)的所有数据。
在我的一生中,我无法获得完整的数据组件来从 URL(路由)中获取图书 ID:
Link 使用的路由定义:
<Route path="/book/:id" component={BookDataDisplay}/>
BookListItem 组件(在 SearchResults 组件中)生成以下内容:
<p><Link to={"/book/" + bookObject.id}>DISPLAY FULL BOOK DATA</Link></p>
生成的实际链接:
http://jstest.dd:8083/react_librivox_search/book/3277
但是 BookDisplay 组件永远不会得到 this.props.params,它仍然是一个空对象。书籍显示组件的 render() 方法起作用了,但是没有用于填充书籍显示的数据,因为 this.props.params.id 变量永远不会从 URL 中获取“3277”id 号(没有书籍id,我无法获取数据)。
知道可能出什么问题了。我一直想知道是否必须定义 PropTypes 或 ContextTypes 才能使参数传递起作用,但我没有在文档中看到任何地方都说明传递无论如何都可以工作,但是一旦您定义了 Route 和参数,就会自动进行。
我正在使用 Redux,但我不认为这个问题与 redux 有任何关系,除非 redux 征用所有组件并使它们都依赖于更新 Redux 存储(我不会将整个书籍列表发送到单个书籍数据显示组件)。