zoukankan      html  css  js  c++  java
  • React-Hooks

    笔记来自
    hooks
    技术胖视频
    木牛木马视频

    前言

    • hooks是一种出现在16.8之后的写法
    • 他把数据和操作方法进行了分离,类似于Java的bean结构
    • 不能用class extend component的写法了

    只做了解,不建议使用,理由如下

    • 与Next不兼容
    • 与immutable不兼容

    index.js

    import React from 'react';
    import ReactDOM from 'react-dom';
    
    ReactDOM.render(<App />, document.getElementById('root'));
    

    useState的使用

    import React, { useState } from 'react';
    function App(){
        // 这个是数组结构,第一个就是数据,第二个是修改数据的方法,把新数据传进去就行
        // useState传参就是初始化数据,不传就是空
        const [ count , setCount ] = useState(0);
        return (
            <div>
                <p>You clicked {count} times</p>
                // 这里一定是个函数
                <button onClick={()=>{setCount(count+1)}}>click me</button>
            </div>
        )
    }
    export default App;
    

    useEffect的使用

    • 这个是所有生命周期函数的集合体
    • 他是异步执行的,不像生命周期是同步的
    • 可以写多个
    import React, { useState , useEffect } from 'react';
    function App(){
        const [ count , setCount ] = useState(0);
    
        // 只有一个参数表示数据更新就会执行,包括第一次数据加载componentDidMount
        useEffect(()=>{
            console.log(`useEffect=>You clicked ${count} times`)
        })
    
        // 表示只执行一次,即第一次数据加载componentDidMount
        useEffect(()=>{
            console.log(`useEffect=>You clicked ${count} times`)
        },[])
    
        // 对某个数据更新的监听
        useEffect(() => {
           console.log(`name数据变化了`)
        },[name])
        useEffect(() => {
           console.log(`age数据变化了`)
        },[age])
    
        // 销毁组件是怎么写
        useEffect(() => {
           return ()=>{
              console.log(`组件被销毁了`)
           }
        },[])
    
        return (
            <div>
                <p>You clicked {count} times</p>
                <button onClick={()=>{setCount(count+1)}}>click me</button>
            </div>
        )
    }
    export default App;
    
    • 发现了没有,还不如直接写生命周期呢,乱七八糟的

    UseRef的使用

    import React, { useRef ,useState,useEffect } from 'react';
    function App(){
        const inputEl = useRef(null)
        const onButtonClick=()=>{ 
            inputEl.current.value="Hello ,useRef"
        }
        return (
            <div>
                {/*保存input的ref到inputEl */}
                <input ref={inputEl} type="text"/>
                <button onClick = {onButtonClick} >在input上展示文字</button>
            </div>
        )
    }
    export default App
    

    其他

    • useContext
    • useReducer
    • useMemo
    • useCallback
    • 算了不了解了,看多了头疼,总之,不建议使用
  • 相关阅读:
    美政府备忘录强推DNS安全扩展协议 java程序员
    安全使用网上银行 享受在线购物时尚生活 java程序员
    渗透测试介绍 java程序员
    sdut2465其实玩游戏也得学程序(bfs+优先队列)
    usaco1.44Mother's Milk
    sdut2493Constructing Roads
    poj3687Labeling Balls
    usaco1.51Number Triangles(数字三角形)
    sdut2497A simple problem
    usaco2.11Ordered Fractions
  • 原文地址:https://www.cnblogs.com/pengdt/p/13070790.html
Copyright © 2011-2022 走看看