javascript - useState() Hook 在 reacts.js 中是如何工作的?
问题描述
我是 react.js 的新手,下面是我的代码
import React,{useState} from 'react';
import './App.css';
import Person from './Person/Person'
const App = props =>
{
const [personState, setPersonState] = useState({
persons : [
{name:"Max", age:28},
{name:"Manu", age:29},
{name:"Ranjeet", age:25}
],
otherState : 'Some state value'
}
);
console.log(personState);
const switchNameHandler = () =>{
setPersonState({
persons : [
{name:"Maximillian", age:28},
{name:"Manu", age:29},
{name:"Ranjeet", age:24}
],
otherState : personState.otherState
});
}
// function App() {
return (
<div className="App">
<h1>React App</h1>
<p>This is working</p>
<button onClick={switchNameHandler}>Switch Name</button>
<Person name={personState.persons[0].name} age={personState.persons[0].age}/>
<Person name={personState.persons[1].name} age={personState.persons[1].age}>My Hobbies:Racing</Person>
<Person name={personState.persons[2].name} age={personState.persons[2].age}/>
</div>
);
}
export default App;
这里我在switchNameHandler函数中没有console.log(personState),但它显示在控制台中,当调用switchNameHandler时,是因为useState()钩子还是其他原因
{persons: Array(3), otherState: "Some state value"}
otherState: "Some state value"
persons: Array(3)
0: {name: "Maximillian", age: 28}
1: {name: "Manu", age: 29}
2: {name: "Ranjeet", age: 24}
length: 3
__proto__: Array(0)
__proto__: Object
解决方案
是的,这是因为 useState。
在此代码中,每次呈现 App 组件时都会调用 console.log。
当整个应用程序被渲染时,或者你的应用程序组件状态发生变化时,这至少会发生一次。在您的示例中, useState 创建了一些状态,并且您的单击处理程序更改了该状态,因此重新呈现了 App 组件。
推荐阅读
- javascript - 一段时间后,Javascript setInterval“崩溃”?
- google-cloud-platform - gcp cloud shell 安装节点包出现空间不足错误
- python - 即使使用 Spyder 安装,也没有名为“folium”的模块
- javascript - Array() 构造函数中的 push 函数将其添加到所有元素
- websocket - NestJS websocket 客户端消息监听器
- github-pages - 如何设置 GitHub Pages root 重定向到 index.html 而不是 404?
- validation - 升级到 laravel 7 后验证中的空白屏幕
- python-3.x - 如何重塑数据框?
- matrix - 使用 Modelica integralExp 函数的 LTI 状态空间模型离散化不起作用
- html - djnago 中谷歌搜索的标签