Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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 同时输出NaN和“0”的值;无效日期“;以及正确的值_Javascript_Reactjs - Fatal编程技术网

Javascript 同时输出NaN和“0”的值;无效日期“;以及正确的值

Javascript 同时输出NaN和“0”的值;无效日期“;以及正确的值,javascript,reactjs,Javascript,Reactjs,此函数接受参数{values},并应计算结果并设置其状态(在ReactJS中)。setResult()不会向控制台输出任何内容,但是,console.log都会输出Nan、无效日期,使我的React应用程序崩溃,然后输出正确的值 const [calcResult, setResult] = useState(); const calculator = (values) => { let resultSeconds = (values.fileSize*1000)/(v

此函数接受参数{values},并应计算结果并设置其状态(在ReactJS中)。setResult()不会向控制台输出任何内容,但是,console.log都会输出Nan、无效日期,使我的React应用程序崩溃,然后输出正确的值

  const [calcResult, setResult] = useState();


  const calculator = (values) => {
    let resultSeconds = (values.fileSize*1000)/(values.downloadSpeed/8);
    let secondsPure = new Date(null);
    secondsPure.setSeconds(resultSeconds);
    console.log(secondsPure);
    console.log(resultSeconds);
    let result = secondsPure.toISOString().substr(11,8);
    setResult(result);
    console.log(result);
  };
例如,假设secondsPure=80。相应的console.log(secondsPure)将打印NaN,然后在React应用程序崩溃后,它将向控制台打印80

值的示例:

downloadSpeed: "300"
fileSize: "3"

setState是异步函数,这意味着当您执行类似操作时

   const [result , setResult]=useState(null)
   const calculator = (values) => {
       setResult(result);
       console.log(result);//this will output null because setResult call is not done yet 
//when setResult  finishes you component reloads and only then you can get the new value 
   };

如果要获取更新的值,需要使用
useffect
并将
result
设置为依赖项

  useEffect(() => {
    console.log(result)
  }, [result])

您希望
新日期(空)
给您什么?另外,请展示示例输入和输出。我添加了一个示例。调用new Date(null)为
let result=secondsPure.toISOString().substr(11,8)准备一个容器
所以我们需要一个
值的例子,因为最可能发生的是
值。downloadSpeed
是0,或者一个字符串,或者导致
结果秒
NaN
,这将导致
secondsPure
无效日期,谢谢你的帮助!:)使用这些值,它可以工作(在react上下文之外):