---
title: '不可變型別'
description: 'Yew 的不可變資料結構'
---

## 什麼是不可變型別？

這些類型是您可以實例化但永遠不會更改值的類型。為了更新值，您必須實例化一個新值。

## 為什麼使用不可變型別？

與 React 一樣，屬性是從祖先傳播到子代的。這意味著屬性在每個元件更新時必須存在。這就是為什麼屬性應該——理想情況下——很容易克隆。為了實現這一點，我們通常將事物包裝在 `Rc` 中。

不可變類型非常適合保存屬性的值，因為它們可以在從組件傳遞到組件時以很低的成本克隆。

## 常見的不可變型別

Yew 推薦使用來自 `implicit-clone` crate 的以下不可變型別：

- `IString`（在 Yew 中別名為 `AttrValue`）- 用於字串而不是 `String`
- `IArray<T>` - 用於陣列/向量而不是 `Vec<T>`
- `IMap<K, V>` - 用於映射而不是 `HashMap<K, V>`

這些型別是引用計數（`Rc`）或靜態引用，使它們的克隆成本非常低。

## 進一步閱讀

- [不可變範例](https://github.com/yewstack/yew/tree/master/examples/immutable)
- [Crate `implicit-clone`](https://docs.rs/implicit-clone/)
