Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 组件刷新时丢失收到的道具_Javascript_Reactjs_Semantic Ui React - Fatal编程技术网

Javascript 组件刷新时丢失收到的道具

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() //

我有一个组件,它有一个项目列表,这取决于用户点击的项目,这将把它们带到第二个组件中,该组件根据从前一个组件接收到的道具呈现信息

在第二个组件中,我有一个基于从前一个组件接收到的道具的API调用,该调用在组件挂载后调用

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所说