Logo
Section 1 / 3

设置状态的初始值(checkpoint)

这是关于 React 中状态初始化模式的快速介绍!

检查点

设置状态的初始值(checkpoint)

这是关于 React 中状态初始化模式的快速介绍!

设置状态的初始值

初始化意味着设置某个东西的值。严格来说,初始化是指在创建或定义该对象时立即设置其值,而之后的赋值操作则称为“赋值”。不过为了简化理解,我们采用第一种定义。状态初始化模式的存在,是为了让自定义 Hook 的使用者能够轻松地设定“状态的初始值”。

需要注意的是,状态初始化模式并不能完全控制每次设置“状态值”的过程。它主要允许用户在初始化时设定状态,并在后续重置状态。

这并不等同于对状态值设置拥有完全控制权,但正如你即将看到的,它提供了类似的便利性。

在我们实现的自定义 Hook 中,做了如下操作:

1export default function useExpanded () { 2 // 注意这里 👇 3 const [expanded, setExpanded] = useState(false) 4 ... 5}

我们假设传入 useState 的初始状态始终为 false。

但这可能并不总是成立。

让我们通过一个参数让用户能够控制这个值。我们将这个参数命名为 initialExpanded,如下所示:

1export default function useExpanded (initialExpanded = false) { 2 const [expanded, setExpanded] = useState(initialExpanded) 3 ... 4 return value 5}

现在,用户可以在调用 useExpanded 自定义 Hook 时传入 initialExpanded,以决定组件的初始展开状态。

下面是一个示例:用户可能希望条款与条件内容默认处于展开状态:

1// 用户的应用程序 2function App () { 3 // 注意这里 —— 向 Hook 调用中传入 "true" 👇 4 const { expanded, toggle } = useExpanded(true) 5 return ( 6 ... 7 ) 8}
...
条款与条件默认展开

在之前的实现中,用户很难做到这一点,因为我们内部将初始状态硬编码为 false。

如你所见,这是一个简单却非常实用的模式。

快速小测验!

来测试一下吧!


在下一节课中,我们将学习如何重置状态!

Quiz

单选题

这个模式解决的关键问题是什么?

1 / 1

属性获取器

重置状态