当前位置: 首页 > 知识库问答 >
问题:

离开并返回页面ReactJS时保存一个道具

孔俊友
2023-03-14

我有一个<code>用户名

return <Redirect to={{
    pathname: "/products",
    state: username
  }}/>  

然后我有一个

当我回到“产品列表”

这是我希望存储用户名的“产品列表”路由的完整代码:

import React, {useState, useEffect} from 'react';
import './Products.css';
import {Link} from 'react-router-dom';

function Products(props) {

  const [products, setProducts] = useState([]);

  useEffect(() => {
    const fetchProducts = async () => {

      const data = await fetch("https://example.com/products");
  
      const products = await data.json();
      console.log(products);
      setProducts(products);
    };
    fetchProducts();
  }, []);

  let username = props.location.state;

  return (   
    <div> 
      <p className = "HelloUser">Hello, {username}</p>
      <p className = "ProductTitle">Our Selection</p>
      <div className = "ProductGrid">
        {products.map(product =>(
        <div className = "ProductBox" key={product.id}>
          <img className ="ProductImage" src={product.image} alt="did not load"/>
          <p className ="ProductName">{product.name}</p>
          <p className ="ProductDiscountedPrice">{"£" + (Math.round(product.discountedPrice * 100) / 100).toFixed(2)}</p>
          <p className ="ProductPrice">{"£" + (Math.round(product.price * 100) / 100).toFixed(2)}</p>
          <Link to={`/products/${product.id}`} className="MoreInfoButton">More info</Link>
        </div>
        ))}
      </div>
    </div>
  )
}

export default Products;

共有1个答案

丁豪
2023-03-14

已解决:通过将用户名道具进一步传递给“单个产品”组件来解决它。这样,当我回击“产品列表”时,用户名就会保留下来。

或者更好地在sessionStorage中存储用户名。

 类似资料:
  • 假设我有一个spring bean我想在整个应用程序中使用,但是因为它是遗留代码,所以我不能在或任何类型的bean中使用它,因为这个类是在整个项目中手动实例化的,所以我不能在我想要的地方自动地使用它。 我如何为一个我想要重用的spring bean创建一个包装器类,配置如下,这样它除了返回在应用程序上下文中注册的bean的实例之外什么都不做? 基本上,我正在寻找类似的方法,如: 这样,在我想使用M

  • 情况: 我想做的事: 问题: 我只能指定一个propType?我如何允许两种不同的道具组合成一种? 谢谢

  • 问题内容: 我正在尝试读取图像文件(准确地说是.jpeg),并将其“回显”回页面输出,但是却显示了图像… 我的index.php具有这样的图像链接: 和我的PHP脚本基本上做到这一点: 1)读取1234.jpeg 2)echo文件内容… 3)我觉得我需要使用mime类型返回输出,但这是我迷路的地方 一旦弄清楚了,我将删除所有输入的文件名,并将其替换为图像ID。 如果我不清楚,或者您需要更多信息,请

  • 问题内容: 我有一个将数据发送到php脚本的jquery-ajax函数,问题在于返回值,它返回整个页面而不是单个值。 感谢您的时间和帮助。 问题答案: 就是这样。您是通过AJAX进行请求的,因此您将获得其中的任何内容。 如果您想要一个特定的值,请创建一个仅输出该值的新PHP页面,然后请求该URL的内容。

  • 我想在用户离开angular 2应用程序的特定页面之前警告他们未保存的更改。通常我会使用<代码>窗口。onbeforeunload,但这不适用于单页应用程序。 我发现在角1中,您可以连接到事件以为用户抛出框,但我还没有看到任何内容说明如何让它在角2中工作,或者该事件是否仍然存在。我还看到了为提供功能的ag1插件,但同样,我还没有看到任何将其用于ag2的方法。 我希望其他人能找到解决这个问题的办法;

  • 问题内容: 我想返回渲染的页面和可下载的文件作为对请求的响应。我试图返回两个响应的元组,但是它不起作用。如何提供下载和页面? Flask是否有能力应对这种情况?似乎是一个普通问题,我只是想将文件发送回下载,然后呈现页面。 问题答案: 您不能将多个响应返回到单个请求。取而代之的是,生成文件并将其存储在某个位置,并通过另一条路径来提供服务。返回呈现的模板,并提供一个网址以提供该文件的路径。 在模板中,