一个案例
本案例涉及的代码文件,包括:
- 模板文件index.html
- 入口文件index.js
- 入口组件App.js
- components/Demo/index.jsx,即Demo组件
模板文件index.html
<!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>
入口文件index.js
import React from "react";
import ReactDOM from "react-dom";
import App from "./App.js";
ReactDOM.render(<App/>,document.getElementById("root"));
入口组件App.js
import React, { Component } from 'react'
import Demo from "./components/Demo"
export default class App extends Component {
render() {
return (
<div>
<Demo/>
</div>
)
}
}
Demo/index.jsx(Demo组件)
import React, { Component, createRef } from 'react'
export default class Demo extends Component {
myRef = createRef()
handleClick = () => {
alert(this.myRef.current.value);
}
render() {
return (
<div>
<input type="text" ref={this.myRef}/>
<button onClick={this.handleClick}>点我提示信息</button>
</div>
)
}
}
函数式组件实现Demo
React Hook使得函数式组件可以使用state及其他React特性。
React Hook常见有:
- State Hook,即
useState()
- Effect Hook,即
useEffect()
- Ref Hook,即
useRef()
本例演示Ref Hook,即useRef的使用。代码更改涉及的文件有:component/Demo/index.jsx。
import React,{useRef} from 'react';
export default function Demo(){
const myRef = useRef();
function handleClick(){
alert(myRef.current.value);
}
return (
<div>
<input type="text" ref={myRef}/>
<button onClick={handleClick}>点我提示信息</button>
</div>
)
}
useRef()
的使用和 createRef()
的使用很类似。