Skip to main content

js-tosorted-immutable

Use toSorted() instead of sort() to avoid mutating arrays. Apply when sorting arrays that are React props, state, or otherwise shared/referenced elsewhere.

来源信息

仓库
TheOrcDev/8bitcn-ui
最近来源活动
2026年1月16日 09:09
检测到的 SKILL.md 语言
英语
星标
2,061
Forks
119

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
js-tosorted-immutable
description
Use toSorted() instead of sort() to avoid mutating arrays. Apply when sorting arrays that are React props, state, or otherwise shared/referenced elsewhere.
## Use toSorted() Instead of sort() for Immutability `.sort()` mutates the array in place, which can cause bugs with React Use `.toSorted()` to create a new sorted array without state and props. mutation. **Incorrect (mutates original array):** ```typescript function UserList({ users }: { users: User[] }) { // Mutates the users prop array! const sorted = useMemo( () => users.sort((a, b) => a.name.localeCompare(b.name)), [users] ) return <div>{sorted.map(renderUser)}</div> } ``` **Correct (creates new array):** ```typescript function UserList({ users }: { users: User[] }) { // Creates new sorted array, original unchanged const sorted = useMemo( () => users.toSorted((a, b) => a.name.localeCompare(b.name)), [users] ) return <div>{sorted.map(renderUser)}</div> } ``` **Why this matters in React:** 1. Props/state mutations break React's immutability model - React expects props and state to be treated as read-only 2. Causes stale closure bugs - Mutating arrays inside closures (callbacks, effects) can lead to unexpected behavior **Browser support (fallback for older browsers):** `.toSorted()` is available in all modern browsers (Chrome 110+, Safari 16+, Firefox 115+, Node.js 20+). For older environments, use spread operator: ```typescript // Fallback for older browsers const sorted = [...items].sort((a, b) => a.value - b.value) ``` **Other immutable array methods:** - `.toSorted()` - immutable sort - `.toReversed()` - immutable reverse - `.toSpliced()` - immutable splice - `.with()` - immutable element replacement
在 GitHub 查看