React-Hooks之useState

今天是值得开心的事情,终于学到hooks啦,今天学了两个hook,只能说相见恨晚,感觉自己之前学context和redux都白学了,用起来还麻烦,呜呜
难怪之前一个友友疯狂推荐hooks,今天终于见证其简易性啦,爱了爱了

终于学到hooks啦,欢呼~.png

1.什么是Hook?
  • Hook 是 React 16.8 的新增特性,它可以让函数式组件拥有类组件特性
2.为什么需要Hook?
  • 在Hook出现之前, 如果我们想在组件中保存自己的状态,
    如果我们想在组件的某个生命周期中做一些事情, 那么我们必须使用类组件
    • 但是类组件的学习成本是比较高的, 你必须懂得ES6的class, 你必须懂得箭头函数
    • 但是在类组件的同一个生命周期方法中, 我们可能会编写很多不同的业务逻辑代码;这样就导致了大量不同的业务逻辑代码混杂到一个方法中, 导致代码变得很难以维护
      诸如:在组件被挂载的生命周期中, 可能主要注册监听, 可能需要发送网络请求等
    • 但是在类组件中共享数据是非常繁琐的, 需要借助Context或者Redux
  • 所以当应用程序变得复杂时, 类组件就会变得非常复杂, 非常难以维护所以Hook就是为了解决以上问题而生的
3.如何使用Hook?
  • Hook的使用我们无需额外安装任何第三方库, 因为它就是React的一部分
  • Hook只能在函数组件中使用, 不能在类组件,或者函数组件之外的地方使用
  • Hook只能在函数最外层调用, 不要在循环、条件判断或者子函数中调用
    官方文档地址: https://react.docschina.org/docs/hooks-intro.html
function Home() {
    // 只能在函数体的最外层使用
    // 只能在这个地方使用Hook
    if(){
        // 不能使用Hook
    }
    while (){
        // 不能使用Hook
    }
    for(){
        // 不能使用Hook
    }
    switch () {
        // 不能使用Hook
    }
    function demo() {
        // 不能使用Hook
    }
}

hooks01 - useState

1.什么是Hook?

Hook就是一个特殊的函数

2.什么是useState Hook?

可以让函数式组件保存自己状态的函数

3.useState Hook如何使用?

Hook只能在函数式组件中使用, 并且只能在函数体的最外层使用
useState:
参数: 保证状态的初始值
返回值: 是一个数组, 这个数组中有两个元素
第一个元素: 保存的状态
第二个元素: 修改保存状态的方法

import React, {useState} from 'react';
function App() {
  const [nameState, setNameState]  = useState("小单小单小单在这里呀")
  const [ageState, setAgeState] = useState(18);
  const [studentState, setStudentState] = useState({name:'zs', age:23});
  const [heroState, setHeroState] = useState([
        {id: 1, name:'鲁班'},
        {id: 1, name:'虞姬'},
        {id: 1, name:'黄忠'},
    ]);
    return (
        <div>
            <p>{ageState}</p>
            <button onClick={()=>{setAgeState(ageState + 1)}}>增加</button>
            <button onClick={()=>{setAgeState(ageState - 1)}}>减少</button>
            <hr/>
            <p>{nameState}</p>
            <button onClick={()=>{setNameState('it666')}}>修改</button>
            <hr/>
            <p>{studentState.name}</p>
            <p>{studentState.age}</p>
            <hr/>
            <ul>{
                heroState.map((hero)=>{
                    return <li>{hero.name}</li>
                })
            }</ul>
        </div>
    )
}
export default App;

useState 注意点:和类组件中的setState一样,是异步调用,因此在某些情况下连续调用会产生“合并现象”
解决办法和state一样,修改保存状态的方法能够接收上次返回的数据,那么可以在这个基础上进行操纵即相当于同步操作,此时可以避免合并现象

    function incrementAge() {
        // setAgeState(ageState + 10);
        // setAgeState(ageState + 10);
        // setAgeState(ageState + 10);
//会发生合并现象
        setAgeState((preAgeState)=>preAgeState + 10);
        setAgeState((preAgeState)=>preAgeState + 10);
        setAgeState((preAgeState)=>preAgeState + 10);
    }

完结撒花??ヽ(°▽°)ノ?,开心复习专业课,练练口语准备睡觉觉

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容