zoukankan      html  css  js  c++  java
  • React Hook之useState

    React的函数式组件式本身是没有状态的和其他类似于class组件的功能,所以一开始,函数组件一般只作为容器组件存在,用来展示父级组件传入的值。而16.8之后出现的 hooks(钩子),打开了函数式组件的新大门。

    useState

    作用:用来记录函数式组件的状态。

    使用方式:

    import React, { useState } from 'react'
    const [n, setN] = React.useState(0)

    例子:

    import React, {useState} from 'react';
    import ReactDom from 'react-dom'
    
    const App = ()=>{
            console.log("页面刷新了")
        const [count,setCount] = useState(0)
        const add = ()=>{
            setCount(count+1)
        }
        return (
            <div>
                <div>{count}</div>
                <button onClick={add}>+1</button>
            </div>
        )
    }
    
    ReactDom.render(<App/>,document.querySelector("#root"))

    其它示例:

    hooks 中再也不需要this的概念了,并且必须放到函数组件内部最外层、最上面引入 useState 和 useEffect 

    import React, { useState, useEffect } from "react";

    useState 

    先看一个例子:

    const [count, setCount] = useState(0);

    其实就是es6的数组解构

     useState(params) 设置 第一个参数的初始值 

    count 是解构出的第一个参数 

    setCount 是第二个参数 是一个函数 用来设置count 

    可以这么操作 setCount(count + 1); 这样 count 设置称为最新的值

    useEffect  

    它接受2个参数,第一个是函数,第二个是数组

    如果第二个参数数组为空 它就是componentDidMount 只有第一次渲染

    如果二个参数数组 里面的值 设置的 值改变 它就是componentDidUpdate 只要值改变了 他就渲染

    useEffect 内部 最外层 支持return () =>  相当于 componentWillUnmount 卸载 来开当前组件的时候触发 并且 每次更新 都触发

    对了 useState 和 useEffect  支持写多个,例如:

    const [count, setCount] = useState(0);
    const [count2, setCount2] = useState(0);
    
    useEffect(() => {
    
    },[])
    
    useEffect(() => {
    
    },[xxx])

    总结

    const [state, setState] = React.useState(initialState);

    React 16.8.0 正式增加了 Hooks ,它为函数组件引入了 state 的能力,换句话说就是使函数组件拥有了 Class 组件的功能。React.useState() 返回的第二个参数 setState 用于更新 state ,并且会触发新的渲染。同时,在后续新的渲染中 React.useState() 返回的第一个 state 值始终是最新的。为了保证 memoizedState 的顺序与 React.useState() 正确对应,我们需要保证 Hooks 在最顶层调用,也就是不能在循环、条件或嵌套函数中调用。React.useState() 通过 Object.is() 来判断 memoizedState 是否需要更新。

  • 相关阅读:
    结对(求数组的最大子数组和)
    结对3(求一维数组最大子数组的和扩展)
    结对3(电梯调度需求分析)
    结对开发2(求二维数组的最大子数组和)
    四则运算3(四则运算2程序的扩展)
    四则运算2代码测试
    四则运算2程序及运行
    C++输出四则运算设计题的思路
    C++编程显示四则运算题目
    软件课外读物阅读计划
  • 原文地址:https://www.cnblogs.com/samve/p/13817836.html
Copyright © 2011-2022 走看看