美文网首页
React Hooks(函数组件)

React Hooks(函数组件)

作者: println文 | 来源:发表于2020-08-26 15:57 被阅读0次

简介

Hooks是函数组件钩入React State及生命周期等特性的函数。
不能在class函数中使用

特点

1,无需修改组件结构的情况下复用状态逻辑
2,组件中的互关联部分可拆分成更小的函数
3,更简洁,更易理解的代码

状态钩子 useState

const [book, setBook] = useState('')
const [books, setBooks] = useState(['vue', 'react'])

副作用钩子 useEffect

第二个参数是依赖,[]只触发一次
清除工作,防止内存泄漏:return function(){... ...}

    useEffect(() => {
        console.log('effect')

        return function () {
            console.log('unEffect')
        }
    }, [])

useContext

用于快速在函数组件中导入上下文

userReducer

useState的可选项,常用于复杂状态,类似redux中的reducer的概念。

代码

import React, { useState, useEffect, useContext } from 'react';

const Context = React.createContext()

// 函数组件-HooksTest
function HooksTest() {
    const [book, setBook] = useState('')
    const [books, setBooks] = useState(['vue', 'react'])

    useEffect(() => {
        console.log('effect')

        return function () {
            console.log('unEffect')
        }
    }, [])

    return <Context.Provider value={{ books, setBooks }}>
        {
            book === '' ? '请选择' : `您选择的是:${book}`
        }
        <BookList books={books} handleBook={setBook} />
        <AddBook />
        {/* <AddBook onAddBook={book => setBooks([...books, book])} /> */}
    </Context.Provider>
}

// 函数组件-图书列表
function BookList({ books, handleBook }) {
    return <ul>
        {
            books.map((item, index) => (
                <li onClick={() => handleBook(item)} key={index}>{item}</li>
            ))
        }
    </ul>
}

// 函数组件-添加图书
function AddBook({ onAddBook }) {
    const [book, setBook] = useState('')
    const { books, setBooks } = useContext(Context)

    return <div>
        <input value={book} onChange={e => setBook(e.target.value)} onKeyDown={e => {
            if (e.key === 'Enter') {
                // onAddBook(book)
                setBooks([...books, book])
                setBook('')
            }
        }} />
    </div>
}

export default HooksTest

相关文章

  • React Hooks

    React Hooks Hooks其实就是有状态的函数式组件。 React Hooks让React的成本降低了很多...

  • react-hooks

    前置 学习面试视频 总结react hooks react-hooks react-hooks为函数组件提供了一些...

  • React_hooks

    React_hooks React16.8新增的特性,主要针对函数组件 一、函数组件和类组件的区别 函数组件的运行...

  • React Hooks - 学习笔记

    React Hooks Hook 是能让你在函数组件中“钩入” React 特性的函数。 State Hook u...

  • useState和useEffect

    Hooks Hooks是React16.8.0版本推出的api,用来解决函数组件中功能不足的问题 组件:无状态组件...

  • react hooks userState

    React引入了React Hooks,简单点说就是可以完全不用类来写组件,可以用函数来写组件。函数使用state...

  • React Hooks的使用限制

    React Hooks的使用限制 只能用于函数组件或自定义Hooks中 不能写在条件语句中 不能写在函数组件或自定...

  • 使用React Context进行状态管理(八)在函数组件中使用

    React Hooks可以让我们完全抛弃类组件,让我们彻底完全函数化。其中的useContext就是用来在函数组件...

  • React入门(三)

    React Hooks React提供很多钩子函数,可以让函数式组件拥有状态和常用的生命周期函数以及ref/con...

  • 来简单聊一聊React Hooks

    为什么会有Hooks?大家都知道React的组件创建方式,一种是类组件,一种是函数式组件,在React官方希望,组...

网友评论

      本文标题:React Hooks(函数组件)

      本文链接:https://www.haomeiwen.com/subject/jvffsktx.html