js-tosorted-immutable
17
总安装量
12
周安装量
#20184
全站排名
安装命令
npx skills add https://github.com/theorcdev/8bitcn-ui --skill js-tosorted-immutable
Agent 安装分布
claude-code
9
opencode
8
codex
8
windsurf
8
gemini-cli
7
antigravity
7
Skill 文档
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):
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):
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:
- Props/state mutations break React’s immutability model – React expects props and state to be treated as read-only
- 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:
// 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