Javascript 我是新的反应,有人能告诉我为什么会发生这种情况吗。。。?
这是密码Javascript 我是新的反应,有人能告诉我为什么会发生这种情况吗。。。?,javascript,reactjs,Javascript,Reactjs,这是密码 import React from "react" let x = 0; const App = () => { x++; console.log(x) return( <div> <p>{x}</p> </div> ) } export default App; 从“React”导入React 设x=0; 常量应用=()=>{ x++; console.lo
import React from "react"
let x = 0;
const App = () => {
x++;
console.log(x)
return(
<div>
<p>{x}</p>
</div>
)
}
export default App;
从“React”导入React
设x=0;
常量应用=()=>{
x++;
console.log(x)
返回(
{x}
)
}
导出默认应用程序;
控制台显示1…但页面显示2
函数中的代码执行两次(显然是x++运行两次)而控制台只输出一次(1)这可能是由于在
React.StrictMode
中呈现应用程序造成的,它会在开发模式中导致双重呈现。它还抑制后续渲染中的console
调用,这可能解释了您看到的差异:
从React 17开始,React自动修改控制台方法
与console.log()类似,在对生命周期函数的第二次调用中使日志静音。但是,在可以使用变通方法的某些情况下,它可能会导致不期望的行为
不确定发生这种情况的确切原因,但作为一般规则,在react组件中只使用
state
属性。我无法重现这种情况,我在两个位置都得到1。你确定这正是你正在运行的代码吗?我在这里没有看到任何问题,你可能想再试一次,因为其他东西正在确保这一点