React Hooks

React在16.7.0-alpha.0版本中提到了Hooks的概念,目前还是Proposal阶段。

官方也陈述,接下来的90%的工作会投入到React Hooks中。

从目前官方的文档可以看出,Hooks从以下四个方面来提高React的编码。

  • state
  • 生命周期
  • content
  • 自定义方法

Hooks的主要用途是替代之前版本的 class 组件。

说明:

到目前为止,React在已发布的release版本中有该功能,想体验该功能,必须安装16.7.0-alpha.0。

```npm i react@16.7.0-alpha.0 react-dom@16.7.0-alpha.0

//或者

yarn add react@16.7.0-alpha.0 react-dom@16.7.0-alpha.0


  1. <h1>State Hooks</h1>
  2. <p>首先看一个React既有的版本基于 <code>class</code> 的组件.</p>

import React from 'react';

class Counter extends React.Component {

constructor(props) {

super(props);

  1. this.state = { count: 0 };

}

render() {

const { count } = this.state;

return (

<React.Fragment>

<p>You clicked {count} times</p>

<button onClick={() => setState({count : count + 1})}>

Click me

</button>

</React.Fragment>

);

}

}


  1. <p>接下来我们看看用Hooks是如何实现的:</p>

import React, { useState } from 'react';

export default () => {

const [count, setCount] = useState(0);

return (

<React.Fragment>

<p>You clicked { count } times</p>

<button onClick={ () => setCount(count + 1) }>

Click me

</button>

</React.Fragment>

);

};


  1. <p>从代码结构上,减少了编码量。由原来的 <code>class</code> 组件变成 <code>function</code> 组件了。</p>
  2. <p>不同的地方:</p>
  3. <ul>
  4. <li>新加入了 <code>useState</code> 方法</li>
  5. <li>通过 <code>useState</code> 钩子解构出了 <code>state</code><code>setState</code> 方法。</li>
  6. <li>
  7. <code>state</code> 的默认值,直接通过 <code>useState</code> 传入</li>
  8. <li>更新 <code>state</code> 不再使用 <code>setState</code> 方法。</li>
  9. </ul>
  10. <p>如果有多个 <code>state</code> 怎么定义呢?</p>

const [count, setCount] = useState(0);

const [name, setName] = useState(null);


  1. <p><a href="https://codesandbox.io/s/pwzj74k5nq" rel="nofollow noreferrer">在线示例</a><br>推荐阅读<a href="https://kairi1227.github.io/" rel="nofollow noreferrer">《React 手稿》</a></p>
  2. 来源:https://segmentfault.com/a/1190000017261209

React手稿之State Hooks of Hooks的更多相关文章

  1. React 手稿 - Component state

    Component state 实例: import React, { PureComponent } from 'react'; export default class extends PureC ...

  2. React手稿之 React-Saga

    Redux-Saga redux-saga 是一个用于管理应用程序副作用(例如异步获取数据,访问浏览器缓存等)的javascript库,它的目标是让副作用管理更容易,执行更高效,测试更简单,处理故障更 ...

  3. React手稿 - Context

    Context Context提供了除props之外的传参数的方式. Context是全局跨组件传递数据的. API React.createContext ``` const {Provider, ...

  4. React入门---属性(state)-7

    state------>虚拟dom------>dom 这个过程是自动的,不需要触发其他事件来调用它. state中文理解:页面状态的的一个值,可以存储很多东西. 学习state的使用: ...

  5. 说说React组件的State

    说说React组件的State React的核心思想是组件化的思想,应用由组件搭建而成, 而组件中最重要的概念是State(状态). 正确定义State React把组件看成一个状态机.通过与用户的交 ...

  6. React组件的State

    React组件的State 1.正确定义State React把组件看成一个状态机.通过与用户的交互,实现不同状态,然后渲染UI,让用户界面和数据保持一致.组件的任何UI改变,都可以从State的变化 ...

  7. react native中state和ref的使用

    react native中state和ref的使用 因props是只读的,页面中需要交互的情况我们就需要用到state. 一.如何使用state 1:初始化state 第一种方式: construct ...

  8. React组件的state和props

    React组件的state和props React的数据是自顶向下单向流动的,即从父组件到子组件中,组件的数据存储在props和state中.实际上在任何应用中,数据都是必不可少的,我们需要直接的改变 ...

  9. React 三大属性state,props,refs以及组件嵌套的应用

    React 三大属性state,props,refs以及组件嵌套的应用 该项目实现了一个简单的表单输入添加列表的内容 代码如下 <!DOCTYPE html> <html> & ...

随机推荐

  1. Java数据结构——红黑树

    红黑树介绍红黑树(Red-Black Tree),它一种特殊的二叉查找树.执行查找.插入.删除等操作的时间复杂度为O(logn). 红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点 ...

  2. 区块链入门到实战(28)之Solidity – 介绍

    Solidity语言是一种面向合约的高级编程语言,用于在以太坊区块链网络上实现智能合约.Solidity语言深受c++.Python和JavaScript的影响,针对以太坊(Ethereum)虚拟机( ...

  3. Ajax、XMLHttpRequest、JSONP的区别

    来自2020年搜狗的笔试题,第一题就不会

  4. C#串口通讯,复制粘贴就可用,仅仅介绍怎样最快的搭建一个串口通讯,异常拦截等等需要自己加上

    using System; using System.Collections.Generic; using System.IO.Ports; using System.Text; //串口通讯类 pu ...

  5. @RequestBody和@RequestParam

    @RequestBody的使用 https://blog.csdn.net/justry_deng/article/details/80972817 (@RequestBody Map map)接收多 ...

  6. JDK 8 新特性之函数式编程 → Stream API

    开心一刻 今天和朋友们去K歌,看着这群年轻人一个个唱的贼嗨,不禁感慨道:年轻真好啊! 想到自己年轻的时候,那也是拿着麦克风不放的人 现在的我没那激情了,只喜欢坐在角落里,默默的听着他们唱,就连旁边的妹 ...

  7. Pyinstaller打包: 将资源文件或文件夹打包到最后生成的exe中

    前提:用pyinstaller打包时部分资源文件可以利用qrc转成py文件来读取,但是有部分文件类型不适用. 原理:Pyinstaller 将资源文件一起打包到exe中.当exe运行时,会生成一个临时 ...

  8. vue-cli3.0 vue脚手架3.0的使用

    1.安装vue-cli 3.0 npm install -g @vue/cli # or yarn globaladd @vue/cli 安装成功后查看版本:vue -V(大写的V)     2.命令 ...

  9. BM算法学习

    根据阮一峰大大的文章实现,不过没实现“搜索词中的上一次出现位置”(我直接实时查找,显然应该预处理): 文章:http://www.ruanyifeng.com/blog/2013/05/boyer-m ...

  10. for、forEach、map、for...in、for...of的区别以及能否终止循环的总结

    有时候面试会提到,用的时候又不在意,今天有空挨个做了测试,总结如下: