Skip to content

Commit d31b519

Browse files
author
pompurin404
committed
optimize rule page performance
1 parent fffd6bd commit d31b519

File tree

2 files changed

+9
-12
lines changed

2 files changed

+9
-12
lines changed

src/renderer/src/components/rules/rule-item.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import React from 'react'
44
const RuleItem: React.FC<IMihomoRulesDetail> = (props) => {
55
const { type, payload, proxy } = props
66
return (
7-
<Card className="m-2">
7+
<Card className="mb-2 mx-2">
88
<CardBody className="flex justify-between">
99
<div className="flex justify-between">
1010
<div className="select-none">{type}</div>

src/renderer/src/pages/rules.tsx

+8-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import BasePage from '@renderer/components/base/base-page'
22
import RuleItem from '@renderer/components/rules/rule-item'
3+
import { Virtuoso } from 'react-virtuoso'
34
import { useMemo, useState } from 'react'
45
import { Input } from '@nextui-org/react'
56
import useSWR from 'swr'
@@ -31,17 +32,13 @@ const Rules: React.FC = () => {
3132
onValueChange={setFilter}
3233
/>
3334
</div>
34-
{filteredRules.map((rule, index) => {
35-
return (
36-
<RuleItem
37-
key={rule.payload + index}
38-
type={rule.type}
39-
payload={rule.payload}
40-
proxy={rule.proxy}
41-
size={rule.size}
42-
/>
43-
)
44-
})}
35+
<Virtuoso
36+
style={{ height: 'calc(100vh - 100px)' }}
37+
data={filteredRules}
38+
itemContent={(_, rule) => (
39+
<RuleItem type={rule.type} payload={rule.payload} proxy={rule.proxy} size={rule.size} />
40+
)}
41+
/>
4542
</BasePage>
4643
)
4744
}

0 commit comments

Comments
 (0)