A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaofeifei112 中级黑马   /  2019-8-8 13:06  /  1110 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xiaofeifei112 于 2019-8-8 13:11 编辑

React Hooks

  • Hooks 是React版本16.8中的新功能。 请记住,我们不能在函数组件中使用state ,因为它们不是类组件。Hooks 让我们在函数组件中可以使用state 和其他功能

  • Hook 不会影响你对 React 概念的理解。 恰恰相反,Hook 为已知的 React 概念提供了更直接的 API:props, state,context,refs 以及生命周期。稍后我们将看到,Hook 还提供了一种更强大的方式来组合他们

  • 我们可以使用一些钩子,例如useState,useEffect,useContext,useReducer等

Hooks 的基本规则

  • Hooks 应该在外层使用,不应该在循环,条件或嵌套函数中使用
  • Hooks 应该只在函数组件中使用。

让我们看一个例子来理解 hooks。 这是一个函数组件,它采用props并在UI上显示这些props。 在useState钩子的帮助下,我们将这个函数组件转换为有状态组件。 首先,我们在第5行定义状态,这相当于

[JavaScript] 纯文本查看 复制代码
constructor(props) {
super(props);
this.state = {
     name:'myname', age:10, address:'0000 one street'
}
}


useState返回两个项,一个是user,另一个是setUser函数。 user 是一个可以在没有 this关键字的情况下直接使用的对象,setUser是一个可以用来设置用户点击第21行按钮的状态的函数,该函数等效于以下内容。

[JavaScript] 纯文本查看 复制代码
this.setState({name:'name changed'})


[JavaScript] 纯文本查看 复制代码
import React, { useState } from "react";

export const UserDisplay = ({ name, address, age }) => {
    const [user, setUser] = useState({
        name: "myname",
        age: 10,
        address: "0000 onestreet"
    });

    return (
        <>
            <div>
                <div class="label">Name:</div>
                <div>{user.name}</div>
            </div>
            <div>
                <div class="label">Address:</div>
                <div>{user.address}</div>
            </div>
            <div>
                <div class="label">Age:</div>
                <div>{user.age}</div>
            </div>
            <button onClick={() => setUser({ name: "name changed" })}>
                Click me
            </button>
        </>
    );
};



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马