【学习打卡】第4天 React Hooks学习
2022/8/17 4:22:53
本文主要是介绍【学习打卡】第4天 React Hooks学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:RN入门到进阶,打造高质量上线App(2022全新升级)
课程章节:2-10 React Native Hooks开发指南
主讲老师:CrazyCodeBoy
课程内容:今天学习的主要内容包括:react hooks入门,学习编写react hooks组件。
课程收获:
- 学会编写React Hooks组件
上次学习了用class来写组件,这次主要用的是React Hooks
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
先定义一个简单的函数式组件:
const Test1 = () => { return ( <button>你好</button> ) } export default Test1;
这个组件本身是没有状态的,当我们点击button后需要修改button的值。
如果按照之前class的写法,是需要父组件传递一个props下来,才能操作的
我们先修改组件的代码,让它接受一个text和一个修改text的方法
type IProps = { text?: string textChange: () => void; } const Test1: React.FC<IProps> = ({ text = "你好", textChange }) => { return ( <button onClick={textChange}>{text}</button> ) } export default Test1;
再去父组件传递参数和方法下来。
<Test1 text={this.state.text} textChange={() => this.setState({ text: "你好" + new Date().getTime() })} />
这样的话,每次点击按钮,组件显示的内容都会变化
如果我们不需要父组件来控制呢?
比如,按钮自己的参数校验,只有符合条件的数据,才调用父组件的方法。
这个时候,就需要使用到组件内自己的状态了。
示例代码:
import { useState } from "react"; type IProps = { submit: (v: string) => void; } const Test1: React.FC<IProps> = ({ submit }) => { const [text, setText] = useState(""); const buttonClick = () => { if (text.length === 0) { alert("参数不能为空"); } else { submit(text); } } return ( <> <input value={text} onChange={e => setText(e.target.value)} /> <button onClick={buttonClick}>提交</button> </> ) } export default Test1;
在这个组件里面 ,我将input输入的内容用组件内的状态text进行了保存,当点击提交按钮的时候,如果text没有值,也就是用户没有进行输入的话,就会有提示信息。当用户输入了东西之后,就调用父组件的submit方法进行提交。
Hook 使用规则
Hook 就是 JavaScript 函数,但是使用它们会有两个额外的规则:
- 只能在函数最外层调用 Hook。不要在循环、条件判断或者子函数中调用。
- 只能在 React 的函数组件中调用 Hook。不要在其他 JavaScript 函数中调用。(还有一个地方可以调用 Hook —— 就是自定义的 Hook 中,我们稍后会学习到。)
今天学习课程加练习一共用了30分钟,学习了React Hooks的简单写法,然后想了下自己会怎么用它。我觉得hook是一个超级方便的语法,明天会学习其他的hook方法。
这篇关于【学习打卡】第4天 React Hooks学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-29如何在 Vue2 的 uni-app 项目中使用 npm ?-icode9专业技术文章分享
- 2024-12-29uni-app vue2微信小程序项目在哪里打开终端并使用npm?-icode9专业技术文章分享
- 2024-12-29怎么在 uni-app Vue2 项目中全局引入 Vant Weapp?-icode9专业技术文章分享
- 2024-12-29uni-app vue2微信小程序项目如何在main.js中全局引入vant?-icode9专业技术文章分享
- 2024-12-28Vue入门教程:从零开始搭建第一个Vue项目
- 2024-12-28Vue CLI入门指南:快速搭建Vue项目
- 2024-12-28Vue3基础知识入门教程
- 2024-12-28Vue3公共组件开发与使用入门教程
- 2024-12-28Vue CLI学习:新手入门教程
- 2024-12-28Vue CLI学习:轻松入门与实践指南