5分钟简单了解React-Hooks

简介: 5分钟简单了解React-Hooks

首先附上官网正文😀:React Hooks

)

Hooks are a new addition in React 16.8. They let you use state and other React features without writing a class.

简单讲就是说,Hooks是在React 16.8版本中新增加的特性。可以让你通过不谢一个类class,就可以使用State和其他React特性。


另外使用ReactNative开发的小伙伴需要注意一下,就是在ReactNative 0.59正式版才开始支持Hooks.

React 16.8.0 is the first release to support Hooks. When upgrading, don’t forget to update all packages, including React DOM. React Native supports Hooks since the 0.59 release of React Native.

现在通过写一个简单的案例来说明一下,下面代码中useState方法就是React已经内部实现的hook,是一个状态钩子。

1.使用class的方式,通过一个按钮点击改变文字


import React, {Component} from 'react'
import {
    Text,
    View,
    TouchableOpacity
} from 'react-native'
export default class demo_class extends Component {
    constructor(props) {
        super(props)
        this.state = {
            text: 'this is class demo'
        }
    }
    _changeTheDefaultText = () => {
        this.setState({
            text: 'this is the new text'
        })
    }
    render() {
        const {text} = this.state
        return (
            <View>
                <Text style={{fontSize: 20, color: 'red'}}>{text}</Text>
                <TouchableOpacity onPress={this._changeTheDefaultText}>
                    <Text style={{fontSize: 20, color: 'red'}}>改变文字</Text>
                </TouchableOpacity>
            </View>
        )
    }
}

2.同样的方式,使用hook来实现


import React, {useState} from 'react'
import {
    Text,
    View,
    TouchableOpacity
} from 'react-native'
const demoHooks = () => {
    // 初始值
    const [text, setText] = useState('this is hook demo')
    // 方法
    _changeTheDefaultText = () => {
        return setText('this is the new text')
    }
    return (
        <View>
            <Text style={{fontSize: 20, color: 'red'}}>{text}</Text>
            <TouchableOpacity onPress={this._changeTheDefaultText}>
                <Text style={{fontSize: 20, color: 'red'}}>改变文字</Text>
            </TouchableOpacity>
        </View>
    )
}
export default demoHooks

通过上面两个简单的例子,直观看使用hook后的代码数明显比使用class完成的少,但实现的是同样的功能。是不是很欣喜呢?


useState()这个函数接受一个初始值作为参数,和class中this.state设置的值一样。返回一个数组,数组的第一个成员是我们自定义的变量,就是状态的当前值,比如,例子中text;第二个成员是一个函数,用来修改state,通常约定set前缀加上自定义状态的变量名,比如例子中的setText

3.新增加的这个hooks特性,没有突破性的改变


  • 是一个可选项。你完全可以尝试使用Hooks重写任何已有代码
  • 100%向后兼容。Hooks并没有带来任何突破性的改变。
  • hooks只是提供了一个多选项,一个more API,来优化你的代码, react 官方也没有打算要完全移除类class
目录
相关文章
|
存储 自然语言处理 Java
【重学C/C++系列(五)】:C++中的面向对象编程全解析
C++作为一门在C和Java之间的语言,其既可以使用C语言中的高效指针,又继承了Java中的面向对象编程思想,在去年编程语言排行榜上更是首次超过Java,进入前三。
【重学C/C++系列(五)】:C++中的面向对象编程全解析
|
JSON 前端开发 JavaScript
Javaweb之Axios的详细解析
1.3 Axios 上述原生的Ajax请求的代码编写起来还是比较繁琐的,所以接下来我们学习一门更加简单的发送Ajax请求的技术Axios 。Axios是对原生的AJAX进行封装,简化书写。
212 0
|
XML Java 程序员
Spring详细总结3
Spring详细总结3
296 0
Spring详细总结3
|
存储 人工智能 小程序
阿里云视觉AI开发者创新应用赛来啦!快来报名参赛,各种豪礼等你来拿
首届阿里云视觉AI开发者创新应用赛开始报名啦!大赛以“无行业不AI“为主题,融合阿里云视觉AI、云原生、云存储、小程序云等多项产品技术,专注为行业应用产品及解决方案开发用户提供展示创意和想法的舞台,播撒创新的种子并帮助其成长。
阿里云视觉AI开发者创新应用赛来啦!快来报名参赛,各种豪礼等你来拿
|
8天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。