React Hooks--与传统react写法比较

2023-11-12

React Hooks 简介

2018年底FaceBook的React小组推出Hooks以来,所有的React的开发者都对它大为赞赏。React Hooks就是用函数的形式代替原来的继承类的形式,并且使用预函数的形式管理state,有Hooks可以不再使用类的形式定义组件了。这时候你的认知也要发生变化了,原来把组件分为有状态组件和无状态组件,有状态组件用类的形式声明,无状态组件用函数的形式声明。那现在所有的组件都可以用函数来声明了。

React Hooks 编写形式对比

先来写一个最简单的有状体组件,点我们点击按钮时,点击数量不断增加。

 

原始写法:

import React, { Component } from 'react';

class Example extends Component {
    constructor(props) {
        super(props);
        this.state = { count:0 }
    }
    render() { 
        return (
            <div>
                <p>You clicked {this.state.count} times</p>
                <button onClick={this.addCount.bind(this)}>Chlick me</button>
            </div>
        );
    }
    addCount(){
        this.setState({count:this.state.count+1})
    }
}

export default Example;

React Hooks 写法:

import React, { useState } from 'react';
function Example(){
    const [ count , setCount ] = useState(0);
    return (
        <div>
            <p>You clicked {count} times</p>
            <button onClick={()=>{setCount(count+1)}}>click me</button>
        </div>
    )
}
export default Example;

从这两个程序的对比上可以看出Hooks本质上就是一类特殊的函数,他们可以为你的函数型组件(function component)注入一些特殊的功能。这听起来有点像以前React中的Mixins差不多哦。其实是由很多不同,hooks的目的就是让你不再写class,让function一统江湖。

转发自:https://jspang.com/detailed?id=50#toc21

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Hooks--与传统react写法比较 的相关文章

  • React中的“计算属性”

    React中的 计算属性 相信许多学习过vue的小伙伴对计算属性都不陌生吧 计算属性能帮我们数据进行一些计算操作 计算属性是依赖于data里面的数据的 在vue中只要计算属性依赖的data值发生改变 则计算属性就会调用 那React中也有计
  • React重点知识拓展,含Hooks、路由懒加载等

    第7章 React扩展 一 setState 1 setState更新状态的2种写法 setState stateChange callback 对象式的setState stateChange为状态改变的对象 该对象可以体现出状态的更改
  • css in js开发利器 - styled-components(样式组件)

    styled components 是一个常见的 css in js 类库 和所有同类型的类库一样 通过 js 赋能解决了原生 css 所不具备的能力 比如变量 循环 函数等 注意 有时候 React 版本和 styled componen
  • 在react项目中,使用craco插件进行mobx配置解决方案

    在使用react项目中 不可避免的要使用蚂蚁金服出品的ant desgin前端UI组件 ant desgin推荐使用 craco 一个对 create react app 进行自定义配置的社区解决方案 对 create react app
  • react项目中使用react-dnd实现列表的拖拽排序

    现在有一个新需求就是需要对一个列表 实现拖拽排序的功能 要实现的效果如下图 可以通过 react dnd 或者 react beautiful dnd 两种方式实现 今天先讲下使用react dnd是如何实现的 github地址 https
  • React 组件通讯

    目录 1 组件通讯 概念 1 组件的特点 2 知道组件通讯意义 总结 2 组件通讯 props 基本使用 1 传递数据和接收数据的过程 2 函数组件使用 props 3 类组件使用 props 总结 3 组件通讯 props 注意事项 1
  • 对useReducer的理解

    useReducer是React提供的一个高级Hook 它不像useEffect useState useRef等必须hook一样 没有它我们也可以正常完成需求的开发 但useReducer可以使我们的代码具有更好的可读性 可维护性 可预测
  • react的条件渲染(或者组件渲染)五种方式 --开发基础总结

    1 使用if的方式判断是否渲染某个组件 function UserGreeting props return h1 Welcome back h1 function GuestGreeting props return h1 Please
  • Ionic3开发教程 - 开发(2)

    Ionic3开发系列教程Ionic3开发教程 环境准备 1 Ionic3开发教程 开发 2 Ionic3开发教程 发布Android版本 3 Ionic3开发教程 发布IOS版本 4 Ionic3开发教程 更新 5 本文中介绍的Ionic3
  • react 使用 scss

    react 使用 scss 日常记录开发中遇到的坑 1 使用 npm install sass loader node sass S 进行安装 2 在页面中直接使用 有时候可以 有时候不行 原因 我个人觉得安装的两个插件本版兼容问题 nod
  • chrome浏览器安装redux-devtools调试工具

    chrome浏览器安装redux devtools调试工具 1 点击进入https www chromefor com 2 在搜索框搜索redux 3 找到最新版本 Redux DevTools v2 17 0 进行下载 4 选择下载线路
  • 关于Vue.js和React.js,听听国外的开发者怎么说?

    VueJS 与 ReactJS 到底怎么样如何 听听别人怎么说 使用所有新的库和框架 很难跟上所有这些库和框架 也就是说 这就需要您决定哪些是值得花时间的 让我们看看人们说什么 和Vue JS一起工作是很愉快的 我发现学习曲线很浅 然而 这
  • React中使用if else 条件判断

    在react中用jsx渲染dom的时候经常会遇到if条件判断 然而在jsx中竟是不允许if条件判断的 以下有几种判断方式 可以根据自己的应用场景 挑选适合的 方案一 class HelloMessage extends React Comp
  • useEffect详情用法

    1 为什么要使用useEffect 想必大家都是用过vue吧 在vue框架所写的项目中 我们通过在与后端进行数据交互的过程中 通常都是会在生命周期中进行数据的请求 然后将数据返回给页面进行渲染 在React中我们也是这样 但是在函数式组件中
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • 【React】 4课 react初识组件

    首先我们如1课创建一个文件夹在文件夹中安装react环境需要的配置文件 npm init y npm i babel standalone D npm i react react dom D 安装配置文件教程链接 https blog cs
  • 如何替换对象的key值

    发生的场景 现在用antd组件库 有些组件想渲染数据的话 我要根据他们官网给的字段名称对应起来才能渲染上去 这个是复选框选中 保存的时候 字段需要按照后台约定的传入code value 1 常规循环遍历 大招来了 哈哈哈 才疏学浅 我觉得是
  • react之封装有无Token(路由权限控制)的高阶组件

    TOC 前景 有些路由页面内的内容信息比较敏感 如果用户没有经过登录获取到有效Token 是没有权限跳转的 根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制 技术方案 实现步骤 1 在 components 目录中 创建 A
  • 自定义hooks

    自定义传参hooks 把大多数的通用代码 或者props 抽成一个hooks 用hooks实现上下文 就不用再一一传参了 实现原理 主要是通过createContext useContext 生产 消费者模式 用于大量props一层一层传参
  • React Jsx转换成真实DOM过程?

    面试官 说说React Jsx转换成真实DOM过程 一 是什么 react 通过将组件编写的 JSX 映射到屏幕 以及组件中的状态发生了变化之后 React 会将这些 变化 更新到屏幕上 在前面文章了解中 JSX 通过 babel 最终转化

随机推荐

  • C语言:定时器原理

    首先 要知道 C语言的定时器是对运行结果起到延时作用 其中 定时单位位毫秒 定时器 顾名思义 肯定会用到时间的 所以 获取时间我们就要用到time库 所以要引用头文件
  • 使用js实现网页录音并上传服务器

    不多嘚嘚 直接上代码
  • Unity界面插件NGUI核心组件说明

    UICamera 可以添加到任何相机 包含事件系统 UICamera是每个UI的重要组成部分 它负责发送Camera中所有NGUI的活动 如果场景中仅有一个Camera 要确保它附有UICamera脚本 如果有多个相机 确保至少用来渲染UI
  • Elasticsearch 7 插件

    1 elasticsearch head 可视化插件 通过浏览器就能看到es的集群部署 节点 索引等信息 注意 es在5 x版本就不再支持head插件安装了 百度搜索可以有多种方式安装 我这里用的是谷歌浏览器安装es head的扩展程序 如
  • 读《携程异步消息系统实践》之总结

    读 携程异步消息系统实践 之总结 消息系统 批量 insertOnly 索引 消息投递 Partition Stick 写入事件截获 预期 Long polling 集群管理 Lease
  • Markdown 有序列表、无序列表中插入代码块

    问题描述 在列表中插入代码块 代码块总是顶格的 并且导致代码块之后的文本也是顶格的 也就是代码块的插入导致了列表的结束 如下所示 解决方法 代码块上方空出来一行 代码块左侧加8个空格或2个TAB 每一行都加 预期效果 扩展 本人个人网站上采
  • 基于Qt仿QQ效果实现图片查看器(支持查看GIF)

    主要提供两个类 第一个类显示静态图片 第二个类显示动态图片 两个类都包含图片缩小放大以及图片移动功能 最后自己封装一个类 根据判断图片是动态还是静态去调用对应的类显示图片 效果展示 判断图片类型 int showImage getImage
  • Mac系统安装Myeclipse2015CI出现虚拟内存为0的问题

    出处 http bbs feng com read htm tid 8450072 page 2 html 方法1 你可以按照9楼的朋友的方法 开启虚拟机的情况下 再安装Myeclipse 就不会出现虚拟内存为0的提示 方法2 Downlo
  • 一元二元三元表达式_2020年高考复习不等式专题训练2.三元不等式的证明

    三元不等式是二元不等式的补充形式 三元不等式和二元不等式类似 经常会有一个三元等式作为条件 解决三元不等式问题的思路大致分为两种 第一是根据等式条件减少未知量的数量 将三元转化为二元 第二是直接利用二元基本不等式的扩展形式或者将三元两两组合
  • Qt中click事件如何响应带参槽函数

    include qttest008 h include
  • Android LCD(一):LCD基本原理篇

    关键词 android LCD TFT 液晶 偏光片 彩色滤光片 背光 平台信息 内核 linux2 6 linux3 0系统 android android4 0 平台 samsung exynos 4210 exynos 4412 ex
  • PHP分页页面重复,WordPress分页标题重复如何解决

    WordPress是一款非常流行的博客程序 虽然它各方面的优化都做的不错了 但每个人的喜好都不一样 一些细节还是可以改进的 No牛网就碰到Wordpress很多的问题都不是那么好实现 毕竟不是专门做CMS的 如等下要说到的Wordpress
  • 【C++】STL库set容器

    STL库set容器 1 构造函数 2 增 2 1 insert 去重 排序 2 2 emplace 去重 排序 2 3 代码演示 3 删 3 1 erase 函数 3 1 1 erase list与vector 3 1 2 erase ma
  • 【python基础知识】20.“午饭吃什么”的python实现(产品思维-实操篇)

    文章目录 前言 练习介绍 练习目标 练习要求 项目实操 明确目标 形成技术方案 编写程序代码 数据准备 主流程逻辑搭建 完善补充确实的功能 最终代码整合 总结 前言 首先 我们回顾以下运用学到的编程知识去做一个产品的大致步骤 同时 也学了一
  • 使配置的环境变量生效

    在dos窗口中输入 set PATH C 之后 关闭该窗口 再次打开窗口 输入 echo PATH 可见配置的环境变量已经生效
  • c#中代码中多线程动态创建progressbar的实例,概念很重要可扩展很多类似概念

    以下是代码中创建progressbar的实例 int count 0 private void button4 Click object sender EventArgs e Thread th new Thread gt Form for
  • Markdown笔记:写数学公式方法

    Markdown笔记 写数学公式方法 这里简单记录一下在markdown中书写数学公式的方法 就像Stackoverflow上的经常有的挺漂亮的公式 其生成的不是图片 而MathJax引擎 在Markdown中添加MathJax引擎也很简单
  • vue项目如何运行(超详图解)

    vue项目如何运行 超详图解 1 查看node npm版本 打开cmd 输入npm v 查看npm版本 输入node v 查看node版本 若出现类似下图显示 即为安装成功 2 删除删除package lock json和node modu
  • 什么是Qt信号槽机制

    1 信号和槽概述 信号槽是 Qt 框架引以为豪的机制之一 所谓信号槽 实际就是观察者模式 发布 订阅模式 当某个 事件 发生之后 比如 按钮检测到自己被点击了一下 它就会发出一个信号 signal 这种发出是没有目的的 类似广播 如果有对象
  • React Hooks--与传统react写法比较

    React Hooks 简介 2018年底FaceBook的React小组推出Hooks以来 所有的React的开发者都对它大为赞赏 React Hooks就是用函数的形式代替原来的继承类的形式 并且使用预函数的形式管理state 有Hoo