赞
踩
计数器案例涉及的代码文件,包括:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>State Hook</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
import React from "react";
import ReactDOM from "react-dom";
import App from "./App.js";
ReactDOM.render(<App/>,document.getElementById("root"));
import React, { Component } from 'react'
import Counter from "./components/Counter/index.jsx";
export default class App extends Component {
render() {
return (
<div>
<Counter/>
</div>
)
}
}
import React, {Component } from 'react' export default class Counter extends Component { state = { count:0 } handleClick = () => { this.setState(state => ({count:state.count+1})) } render() { return ( <div> <h2>当前值为{this.state.count}</h2> <button onClick={this.handleClick}>点我加1</button> </div> ) } }
React Hook使得函数式组件可以使用state及其他React特性。
React Hook常见有:
useState()
useEffect()
useRef()
本例演示State Hook,即useState的使用。代码更改涉及的文件有:component/Counter/index.jsx。
import React,{useState} from "react"; export default function Counter(){ const [count,setCount] = useState(0); function handleClick(){ setCount(count+1); // setCount(count => count+1); } return ( <div> <h2>当前值为{count}</h2> <button onClick={handleClick}>点我加1</button> </div> ) }
useState()
,返回一个数组。数组的第一个元素是状态,第二个元素是操作状态的方法。
本例中useState(0)
返回值的第一个元素是状态数据:count
,第二个元素是操作状态的方法:setCount
。
另外,setCount
有两种写法:
第一种写法:setCount(newValue)
,如setCount(count+1)
。
第二种写法:setCount(value => newValue)
,如setCount(count => count+1)
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。