返回术语

前端

状态State

你可能会问

状态到底是什么?为什么界面能「记得」你刚才做过什么?

简单来说

决定界面当前如何显示的数据,例如菜单是否展开或用户是否登录。

动态说明界面的样子,由一份数据决定State
state

menu"收起""展开"

unread03

一份数据,自己在变
界面照着数据画
状态一变,读它的界面就跟着变——界面是状态的镜子。

01 · 先这样理解

把抽象概念放进真实场景

决定界面当前如何显示的数据,例如菜单是否展开或用户是否登录。

换个角度想

状态像球场的记分牌:比分记在牌子上,而不是观众的喊声里。每得一分先改记分牌,全场看到的比分自然同时更新。

02 · 点击演示

点一下按钮,状态经历了什么?

突出显示的部分,就是当前概念在整条流程中负责的位置。

  1. 初始 state

    likedfalse

    count0

    当前步骤
  2. click

    「该更新了」

    等待进入
  3. count0

    先变的是数据,不是界面
    等待进入
  4. 同一份 count · 两处显示
    角标0
    文字0 人觉得有用
    等待进入
1 / 4

Initial · 给界面一个初始状态

03 · 放进真实任务

什么时候会遇到它

记住操作

菜单展开还是收起、深色还是浅色模式,背后都是一份状态。

同步显示

购物车角标、列表和结算价读同一份状态,所以永远一致。

排查错乱

界面显示不对时,先看状态数据对不对,再查渲染逻辑。

04 · 想一想

用一个问题检查理解

点了「收藏」,图标变红了;刷新页面又变回了灰色。这说明状态存在哪里?

查看答案

变红说明点击更新了内存里的状态;刷新后丢失,说明它只存在内存里,没有写到后端或本地存储。想让页面「记住」,就要把状态持久化。

老师提醒

最容易踩的坑

状态越多,界面越难预测。能从现有状态算出来的值(比如总价)不要再存一份,两份数据迟早会对不上。

⌘K搜索知识库

最近收录

正在载入知识索引…