Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 在react中生成一个唯一的id,该id将保持不变_Javascript_Reactjs_Lodash - Fatal编程技术网

Javascript 在react中生成一个唯一的id,该id将保持不变

Javascript 在react中生成一个唯一的id,该id将保持不变,javascript,reactjs,lodash,Javascript,Reactjs,Lodash,我需要为使用react应用程序的每个客户端保留唯一标识符 这样做会重新生成一个随机字符串(我想要的),但每次刷新时都会这样做,这不是我想要的 const [id] = useState(Math.random().toString(36).substr(2, 8)); 我在lodash中找到了uniqueId()表单,但我担心该id在多个客户端之间不会是唯一的,因为它只提供一个唯一的id,并在每次调用时递增它(1、2、3…) 是否有某种“uniqueId”可以生成一个随机字符串并通过页面刷

我需要为使用react应用程序的每个客户端保留唯一标识符

这样做会重新生成一个随机字符串(我想要的),但每次刷新时都会这样做,这不是我想要的

  const [id] = useState(Math.random().toString(36).substr(2, 8));
我在lodash中找到了uniqueId()表单,但我担心该id在多个客户端之间不会是唯一的,因为它只提供一个唯一的id,并在每次调用时递增它(1、2、3…)


是否有某种“uniqueId”可以生成一个随机字符串并通过页面刷新保持不变?

我认为没有一种内置或现成的解决方案可以在react中生成唯一的id并自动保持不变。你有两个问题要解决

  • 如何生成唯一id。该问题已通过使用解决
  • 以及如何坚持下去
根据您的需要,您可以使用大量的存储空间。假设您希望将数据存储在客户端中,您可以在这里保存数据


同样,这取决于您的用例。因此,请仔细检查哪一个符合您的要求。

另一种生成临时ID的方法是使用浏览器指纹识别,该临时ID对于同一客户机是相同的,无需存储

例如,您可以使用用户代理、客户端时区和屏幕分辨率,对它们应用一些哈希函数并将其称为ID

还有更先进的指纹识别方法,可以减少两个不同用户拥有相同ID的可能性,但这种可能性永远不会是0%


您可能还需要使用一些库,例如用于此功能。

如果需要在页面刷新期间保持它,则需要将其存储在某个位置。将其存储在数据库中是保证其持久性的最佳方法。但如果不能使用后端服务,您可能会考虑使用本地存储或cookie。另外,有关如何生成可能唯一的ID的信息,请参见。@richmcluskey我只需要它作为在帐户创建过程中识别客户端的临时方法,我计划在找到创建唯一ID的方法后将其与上下文一起存储,该唯一ID在刷新时不会更改。感谢链接,我已经用Math.random()找错了方向,以备不时之需。如果您想要一个在客户端之间保证唯一的ID,那么您应该在服务器端而不是客户端生成并存储该ID。这是一个很好的解决方案,我可能会在我未来的项目中使用,谢谢
  const [id] = useState(_uniqueId());