React手稿之State Hooks of Hooks
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
<h1>State Hooks</h1>
<p>首先看一个React既有的版本基于 <code>class</code> 的组件.</p>
import React from 'react';
class Counter extends React.Component {
constructor(props) {
super(props);
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>
);
}
}
<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>
);
};
<p>从代码结构上,减少了编码量。由原来的 <code>class</code> 组件变成 <code>function</code> 组件了。</p>
<p>不同的地方:</p>
<ul>
<li>新加入了 <code>useState</code> 方法</li>
<li>通过 <code>useState</code> 钩子解构出了 <code>state</code> 与 <code>setState</code> 方法。</li>
<li>
<code>state</code> 的默认值,直接通过 <code>useState</code> 传入</li>
<li>更新 <code>state</code> 不再使用 <code>setState</code> 方法。</li>
</ul>
<p>如果有多个 <code>state</code> 怎么定义呢?</p>
const [count, setCount] = useState(0);
const [name, setName] = useState(null);
<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>
来源:https://segmentfault.com/a/1190000017261209
React手稿之State Hooks of Hooks的更多相关文章
- React 手稿 - Component state
Component state 实例: import React, { PureComponent } from 'react'; export default class extends PureC ...
- React手稿之 React-Saga
Redux-Saga redux-saga 是一个用于管理应用程序副作用(例如异步获取数据,访问浏览器缓存等)的javascript库,它的目标是让副作用管理更容易,执行更高效,测试更简单,处理故障更 ...
- React手稿 - Context
Context Context提供了除props之外的传参数的方式. Context是全局跨组件传递数据的. API React.createContext ``` const {Provider, ...
- React入门---属性(state)-7
state------>虚拟dom------>dom 这个过程是自动的,不需要触发其他事件来调用它. state中文理解:页面状态的的一个值,可以存储很多东西. 学习state的使用: ...
- 说说React组件的State
说说React组件的State React的核心思想是组件化的思想,应用由组件搭建而成, 而组件中最重要的概念是State(状态). 正确定义State React把组件看成一个状态机.通过与用户的交 ...
- React组件的State
React组件的State 1.正确定义State React把组件看成一个状态机.通过与用户的交互,实现不同状态,然后渲染UI,让用户界面和数据保持一致.组件的任何UI改变,都可以从State的变化 ...
- react native中state和ref的使用
react native中state和ref的使用 因props是只读的,页面中需要交互的情况我们就需要用到state. 一.如何使用state 1:初始化state 第一种方式: construct ...
- React组件的state和props
React组件的state和props React的数据是自顶向下单向流动的,即从父组件到子组件中,组件的数据存储在props和state中.实际上在任何应用中,数据都是必不可少的,我们需要直接的改变 ...
- React 三大属性state,props,refs以及组件嵌套的应用
React 三大属性state,props,refs以及组件嵌套的应用 该项目实现了一个简单的表单输入添加列表的内容 代码如下 <!DOCTYPE html> <html> & ...
随机推荐
- Mybatis—curd
Mybatis简介: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- LR与LR?
目录 逻辑回归与线性回归 逻辑回归 1.建立目标函数 2. 梯度求解 3. 实现 线性回归 1. 建立目标函数 2. 求解 3. 实现 逻辑回归与交叉熵 逻辑回归与线性回归 逻辑回归 线性回归 目标函 ...
- 网站更换服务器或IP对排名有影响吗
http://www.wocaoseo.com/thread-287-1-1.html 网站更换服务器或IP对排名有影响吗 复制代码 百度官方观点:原则上是不会的.除非-新换的服务器太糟糕,三天两头访 ...
- UnitTest框架的快速构建与运行
我们先来简单介绍一下unittest框架,先上代码: 1.建立结构的文件夹: 注意,上面的文件夹都是package,也就是说你在new新建文件夹的时候不要选directory,而是要选package: ...
- openCV - 1. 加载、修改、保存图像
加载 cv::imread 修改 cv::cvtColor 保存 cv::imwrite 加载图像cv::imread imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称 ...
- 深入理解C++中的new/delete和malloc/free动态内存管理
malloc/free和new/delete的区别 malloc/free是C/C++标准库的函数:new/delete是C++操作符. malloc/free只是动态分配内存空间/释放空间:new/ ...
- [ASP.NET Core开发实战]基础篇04 主机
主机定义 主机是封闭应用资源的对象. 设置主机 主机通常由 Program 类中的代码配置.生成和运行. HTTP项目(ASP.NET Core项目)创建泛型主机: public class Prog ...
- Android开发之获取APP的应用程序名称以及版本名称信息java工具类
//跟App相关的辅助类 public class AppUtils { private AppUtils() { /* cannot be instantiated */ throw new Uns ...
- 挂载磁盘不成功显示mount: /mnt: wrong fs type, bad option, bad superblock..............
[23:25:32 root@8 ~]#mount /dev/sdb2 /mntmount: /mnt: wrong fs type, bad option, bad superblock on /d ...
- Hexo-butterfly-magicv3.0.1(持续更新中....)
介绍 Hexo-butterfly魔改v3.0.1 软件架构 本项目是基于Hexo静态博客的个性主题---蝴蝶主题魔改版 安装教程 克隆 安装依赖 hexo命令生成public文件夹 启动hexo-s ...