我正在学习反应,我的代码运行良好,但我如何才能一次性声明 currDate 以在全局范围内使用它以在 useState 中使用

Posted

技术标签:

【中文标题】我正在学习反应,我的代码运行良好,但我如何才能一次性声明 currDate 以在全局范围内使用它以在 useState 中使用【英文标题】:I am learning react and my code is working fine but how can i declare currDate single time to use it globally to use in useState 【发布时间】:2021-01-06 00:31:13 【问题描述】:

如何全局声明 currDate 以在 useState 中使用它。以下代码可以正常工作,但希望提高效率。

有没有更好的方法来缩短代码?

import React,  useState  from "react";
        
const Clock = () => 
  const date = new Date();
  const currDate = date.toLocaleTimeString();
  const [currTime, updateTime] = useState(currDate);
  console.log(currDate);

   
  const timeHandler = () => 
    console.log(1);
    const date = new Date();
    const currDate = date.toLocaleTimeString();
    updateTime(currDate);
  ;

  return (
    <>
      <h1> currTime</h1>
      <button type="button" onClick=timeHandler>
        Updatetime
      </button>
    </>
  );
;

export default Clock;

【问题讨论】:

【参考方案1】:

如果您想让它简短,而不是重复从toLocaleTimeString 得到currDate 的行。您创建一个函数来执行此操作,并在任何您想要的地方使用它。

示例 - 1

function getCurrDate() 
  return (new Date()).toLocaleTimeString()


const Clock = () => 
  const [currTime, updateTime] = useState(getCurrDate());

  return (
    <>
      <h1> currTime</h1>
      <button type="button" onClick=() => updateTime(getCurrDate())>
        Updatetime
      </button>
    </>
  );
;

export default Clock;

示例 - 2

将最近的日期存储在状态中并从中派生toLocaleTimeString()

const Clock = () => 
  const [currTime, updateTime] = useState(new Date());

  return (
    <>
      <h1> currTime.toLocaleTimeString()</h1>
      <button type="button" onClick=() => updateTime(new Date())>
        Updatetime
      </button>
    </>
  );
;

export default Clock;

【讨论】:

【参考方案2】:

这样的事情对你有用吗?

  1 import React,  useState  from 'react';
  2 
  3 const getTime = () => 
  4   const date = new Date();
  5   const currDate = date.toLocaleTimeString();
  6 
  7   return currDate;
  8 ;
  9 
 10 function Clock() 
 11   const [currTime, updateTime] = useState(getTime());
 12 
 13   const timeHandler = () => 
 14     updateTime(getTime());
 15   ;
 16 
 17   return (
 18     <>
 19       <h1> currTime</h1>
 20       <button type="button" onClick=timeHandler>
 21         Updatetime
 22       </button>
 23     </>
 24   );
 25 
 26 
 27 export default Clock;

【讨论】:

以上是关于我正在学习反应,我的代码运行良好,但我如何才能一次性声明 currDate 以在全局范围内使用它以在 useState 中使用的主要内容,如果未能解决你的问题,请参考以下文章

与 Typescript 反应 - 类型 缺少类型中的以下属性

在节点 js“应该设置秘密”和反应“npm ERR!代码 ELIFECYCLE”中出现错误

我在控制台中收到错误“您需要启用 JavaScript 才能运行此应用程序”。反应

cesiumjs 和 craco 的反应应用程序开始无法正常工作

Alamofire 请求大约需要 10 秒

如何更改 jQuery 的命名空间?