我是前端开发和学习 React 的新手。现在我正在尝试构建一个 hello-world 项目。
执行之后npx create-react-app myapp
,我得到了一个初始的 React 项目,我只是在文件中编码App.js
。
import React, {useState} from 'react';
var counter = 0;
function App() {
const [counter2, setCount] = useState(0);
const increment = () => {
setCount(counter2 + 1);
};
return(
<div>
<button onClick= {increment}>Increment</button>
<h1>{counter++}</h1> // 1, 3, 5, 7... WHY???
<h1>{counter2}</h1> // 0, 1, 2, 3...
</div>
);
}
export default App;
执行后npm start
,我得到了我的索引页,它包含三个部分:一个按钮和两个数字。
令我惊讶的是,当我单击按钮时,counter2
按预期增加,但counter
增加了两倍。这意味着继续单击按钮会给我如下结果:
1 0
, 3 1
, 5 2
...
为什么全局变量是counter
两两增加,而不是一一增加?
此外,React State 和普通全局变量有什么区别?