术语 · 前端

状态

State

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

界面的样子,由一份数据决定

state

menu"收起""展开"

unread03

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

换个角度想

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

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

  1. 初始 state

    likedfalse

    count0

  2. click

    「该更新了」

  3. count0

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

给界面一个初始状态

什么时候会遇到它

  1. 记住操作

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

  2. 同步显示

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

  3. 排查错乱

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

想一想

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

看答案

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

最容易踩的坑

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

⌘K搜索知识库

最近收录

正在载入知识索引…