美文网首页
React扩展之函数Hooks

React扩展之函数Hooks

作者: 硅谷干货 | 来源:发表于2021-12-14 10:17 被阅读0次

初始化项目

import React from 'react'
import ReactDOM from 'react-dom'
import App from './App'
import {BrowserRouter} from 'react-router-dom'

ReactDOM.render(
    <BrowserRouter>
        <App/>
    </BrowserRouter>,
    document.getElementById('root'))

setState

import React, { Component } from 'react'

export default class Demo extends Component {

    state = {count:0}

    add = ()=>{
        //对象式的setState
        /* //1.获取原来的count值
        const {count} = this.state
        //2.更新状态
        this.setState({count:count+1},()=>{
            console.log(this.state.count);
        })
        //console.log('12行的输出',this.state.count); //0 */

        //函数式的setState
        this.setState( state => ({count:state.count+1}))
    }

    render() {
        return (
            <div>
                <h1>当前求和为:{this.state.count}</h1>
                <button onClick={this.add}>点我+1</button>
            </div>
        )
    }
}

useEffect

import React from 'react'
import ReactDOM from 'react-dom'

//类式组件
/* class Demo extends React.Component {

    state = {count:0}

    myRef = React.createRef()

    add = ()=>{
        this.setState(state => ({count:state.count+1}))
    }

    unmount = ()=>{
        ReactDOM.unmountComponentAtNode(document.getElementById('root'))
    }

    show = ()=>{
        alert(this.myRef.current.value)
    }

    componentDidMount(){
        this.timer = setInterval(()=>{
            this.setState( state => ({count:state.count+1}))
        },1000)
    }

    componentWillUnmount(){
        clearInterval(this.timer)
    }

    render() {
        return (
            <div>
                <input type="text" ref={this.myRef}/>
                <h2>当前求和为{this.state.count}</h2>
                <button onClick={this.add}>点我+1</button>
                <button onClick={this.unmount}>卸载组件</button>
                <button onClick={this.show}>点击提示数据</button>
            </div>
        )
    }
} */

function Demo(){
    //console.log('Demo');

    const [count,setCount] = React.useState(0)
    const myRef = React.useRef()

    React.useEffect(()=>{
        let timer = setInterval(()=>{
            setCount(count => count+1 )
        },1000)
        return ()=>{
            clearInterval(timer)
        }
    },[])

    //加的回调
    function add(){
        //setCount(count+1) //第一种写法
        setCount(count => count+1 )
    }

    //提示输入的回调
    function show(){
        alert(myRef.current.value)
    }

    //卸载组件的回调
    function unmount(){
        ReactDOM.unmountComponentAtNode(document.getElementById('root'))
    }

    return (
        <div>
            <input type="text" ref={myRef}/>
            <h2>当前求和为:{count}</h2>
            <button onClick={add}>点我+1</button>
            <button onClick={unmount}>卸载组件</button>
            <button onClick={show}>点我提示数据</button>
        </div>
    )
}

export default Demo

相关文章

  • React扩展之函数Hooks

    初始化项目 setState useEffect

  • React Hooks

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

  • react-hooks

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

  • 2020-09-08

    React Hooks react Hooks就是用函数的形式代替原来的继承类的形式,并且使用预函数的形式管理st...

  • React Hooks用法详解(二)

    React Hooks 在了解React Hooks之前, 我们先看一下 Class 和函数式 的一般写法 Cla...

  • React Hooks - 学习笔记

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

  • React Hooks简介

    React Hooks就是用函数的形式代替原来的继承类的形式,并且使用预函数的形式管理state,有Hooks可以...

  • React(五)深入React-Hooks工作机制,原理

    1.原则:只在React函数中调用Hooks;不要在循环、条件或嵌套函数中调用Hook,确保Hooks在每次渲染时...

  • React Hooks

    react hook 什么是Effect Hooks? 替代原来的生命周期函数 hooks可以反复多次使用,给每一...

  • React_hooks

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

网友评论

      本文标题:React扩展之函数Hooks

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