Javascript 组件刷新时丢失收到的道具
我有一个组件,它有一个项目列表,这取决于用户点击的项目,这将把它们带到第二个组件中,该组件根据从前一个组件接收到的道具呈现信息 在第二个组件中,我有一个基于从前一个组件接收到的道具的API调用,该调用在组件挂载后调用Javascript 组件刷新时丢失收到的道具,javascript,reactjs,semantic-ui-react,Javascript,Reactjs,Semantic Ui React,我有一个组件,它有一个项目列表,这取决于用户点击的项目,这将把它们带到第二个组件中,该组件根据从前一个组件接收到的道具呈现信息 在第二个组件中,我有一个基于从前一个组件接收到的道具的API调用,该调用在组件挂载后调用 async getItem() { let req = await fetch(API_URL + '/items/item/' + this.props.location.itemID) let response = await req.json() //
async getItem() {
let req = await fetch(API_URL + '/items/item/' + this.props.location.itemID)
let response = await req.json()
// Does other things
}
componentDidMount() {
this.getItem()
}
我的问题是,如果用户刷新第二个组件,就会出现未经处理的拒绝,因为第二个组件不知道itemID属性是什么,也不知道用户“刷新”的位置。
如果不重新设计整件事,我该如何处理
如果有关系,我使用
react router dom
并通过to=
prop传递道具,就像to={{{pathname:'/item',itemID:item.id}
你在使用什么路由器?点击该组件后,您的url看起来如何?您可以将itemId存储在localStorage中,并且在安装组件时,如果未定义道具,您可以从localStorage加载它们(从父级或所有者重新正确更新状态)。如果它也是未定义的,那么它是一个exception@Icepickle如前所述,我使用的是react-router-dom
,它在其他类似
的地方定义。您是否建议我将所需的详细信息附加到路径上?因此,如果我从/items
转到item/1
,它将使用该属性而不是prop?@user3328696是的,因为否则您将不得不从其他地方恢复该状态,正如冈萨罗所说,您使用的路由器是什么?点击该组件后,您的url看起来如何?您可以将itemId存储在localStorage中,并且在安装组件时,如果未定义道具,您可以从localStorage加载它们(从父级或所有者重新正确更新状态)。如果它也是未定义的,那么它是一个exception@Icepickle如前所述,我使用的是react-router-dom
,它在其他类似
的地方定义。您是否建议我将所需的详细信息附加到路径上?因此,如果我从/items
转到item/1
,它将使用该属性而不是prop?@user3328696是的,因为否则您将不得不从其他地方恢复该状态,正如Gonzalo所说