Javascript 同时输出NaN和“0”的值;无效日期“;以及正确的值
此函数接受参数{values},并应计算结果并设置其状态(在ReactJS中)。setResult()不会向控制台输出任何内容,但是,console.log都会输出Nan、无效日期,使我的React应用程序崩溃,然后输出正确的值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
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上下文之外):