运行run函数时,我希望value变量具有值“new”,但即使 500 毫秒,它仍然保持“old”。为什么会发生这种情况以及如何解决这个问题?
import React, { Component, useState } from "react";
import { render } from "react-dom";
function App() {
const [value, setValue] = useState('old');
const run = async() => {
setValue('new')
const data = await wait(500)
console.log(value)
}
return (
<button onClick={run}>
Run
</button>
);
}
render(<App />, document.getElementById("root"));
function wait(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
Run Code Online (Sandbox Code Playgroud) 例如,我有
type Line = {
start: Point;
end: Point;
color: string; //'cyan'/'aquablue'/...
}
Run Code Online (Sandbox Code Playgroud)
但是现在我想在Line的基础上创建新的线型,以便将颜色存储为数字:
type HexColorLine = Point & {
color: number;
}
Run Code Online (Sandbox Code Playgroud)
现在我希望HexColorPoint类型等于
{
start: Point;
end: Point;
color: number;
}
Run Code Online (Sandbox Code Playgroud)
但这等于
{
start: Point;
end: Point;
color: string | number;
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以使用一些简短的语法覆盖但不扩展prop类型?我真的需要为此定义全新的类型吗?
我在官方文档中看过https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators:
空和未定义类型严格等于它们自己并且抽象地彼此相等.
但我已经在浏览器的控制台中检查了它.所以:
undefined == null --> true
Run Code Online (Sandbox Code Playgroud)
但
undefined === null --> false //WTF?
Run Code Online (Sandbox Code Playgroud)
这是文档中的拼写错误???