Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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_Components_React Router Dom - Fatal编程技术网

Javascript 不要向孩子传递道具

Javascript 不要向孩子传递道具,javascript,reactjs,components,react-router-dom,Javascript,Reactjs,Components,React Router Dom,我是一个新的反应,并试图建立一个基本的CRUD应用程序作为一个例子 就我的 <EditProduct products = {this.state.products} handleSubmit = {this.handleProductUpdate} /> 组件标记,一个空的products[]数组正在传递给props。我知道state.products是填充的,因为它传递给组件,我可以在控制台中看到它。我认为这可能是一个异步问题,但即使在使用模拟数据时也

我是一个新的反应,并试图建立一个基本的CRUD应用程序作为一个例子

就我的

<EditProduct 
   products     = {this.state.products} 
   handleSubmit = {this.handleProductUpdate} />
组件标记,一个空的products[]数组正在传递给props。我知道state.products是填充的,因为它传递给组件,我可以在控制台中看到它。我认为这可能是一个异步问题,但即使在使用模拟数据时也会出现这种情况

我的第二个问题是,当http://localhost:3000/update/5e3615179d7a8e01d85147e1 调用,以便我可以从状态中筛选出正确的产品。产品[],并仅将选定的产品传递给。react router dom的useParams函数没有为我返回任何结果。 我知道我只需要通过一个产品,但从路由中提取/:id的值时也遇到问题

我找到了CRUD教程,但没有像这样使用路由器。我不明白为什么这会导致这个问题。这件事我已经做了好几天了。任何帮助都将不胜感激

谢谢, Rob

当您使用document.location.replace时,它基本上是一个页面重新加载,将卸载您的应用程序组件并再次重新装载。您可以将控制台放入componentDidMount in App component中进行检查,这意味着EditProduct将再次接收您的初始状态,即空数组,然后再使用更新的数据呈现。然而,在构造函数中,您将只接收初始状态

我的建议是使用react router dom提供的链接组件来避免页面重新加载


至于useParams,它是react router dom的API,支持API,只在功能组件中工作,而不在类组件中工作。

要查看问题,请单击任何产品上的更新并打开控制台。