Skip to content

Commit 606ff33

Browse files
Update example: immutable state
1 parent e76f718 commit 606ff33

2 files changed

Lines changed: 24 additions & 9 deletions

File tree

example/Test.tsx

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,21 @@ import {
55
} from 'flatlist-view-control-rn';
66
import React, {useEffect, useState} from 'react';
77
import {Text, View} from 'react-native';
8+
import {useImmer} from 'use-immer';
89
import {getVideoList} from './API';
9-
10+
type State = {
11+
data: any[];
12+
};
1013
let pageSize = 10;
1114
export default function Test1() {
12-
const [data, setData] = useState<any[]>([]);
15+
const [data, setData] = useImmer<State>({data: []});
1316
const [currentPage, setCurrentPage] = useState(1);
1417
useEffect(() => {
1518
(async function () {
1619
let arr = await getVideoList(1, pageSize);
17-
setData(arr);
20+
setData(draft => {
21+
draft.data = arr;
22+
});
1823
})();
1924
}, []);
2025
const onFooterRefresh = async (endRefreshing: EndRefreshing) => {
@@ -23,21 +28,29 @@ export default function Test1() {
2328
let arr = await getVideoList(next, pageSize);
2429

2530
if (arr.length === pageSize) {
26-
setData(data.concat(arr));
31+
setData(draft => {
32+
draft.data.push(...arr);
33+
});
2734
endRefreshing(RefreshState.CanLoadMore);
2835
} else {
29-
setData(data.concat(arr));
36+
setData(draft => {
37+
draft.data.push(...arr);
38+
});
3039
endRefreshing(RefreshState.NoMoreData);
3140
}
3241
setCurrentPage(next);
3342
};
3443
const onHeaderRefresh = async (endRefreshing: EndRefreshing) => {
3544
let arr = await getVideoList(1, pageSize);
3645
if (arr.length === pageSize) {
37-
setData(arr);
46+
setData(draft => {
47+
draft.data = arr;
48+
});
3849
endRefreshing(RefreshState.CanLoadMore);
3950
} else {
40-
setData(arr);
51+
setData(draft => {
52+
draft.data = arr;
53+
});
4154
endRefreshing(RefreshState.NoMoreData);
4255
}
4356
setCurrentPage(1);
@@ -48,7 +61,7 @@ export default function Test1() {
4861
<RefreshListView
4962
onFooterRefresh={onFooterRefresh}
5063
onHeaderRefresh={onHeaderRefresh}
51-
data={data}
64+
data={data.data}
5265
renderItem={({item}) => <Text style={{height: 50}}>{item.title}</Text>}
5366
/>
5467
</View>

example/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
},
1212
"dependencies": {
1313
"flatlist-view-control-rn": "^1.0.1",
14+
"immer": "^9.0.2",
1415
"react": "17.0.1",
15-
"react-native": "0.64.0"
16+
"react-native": "0.64.0",
17+
"use-immer": "^0.5.1"
1618
},
1719
"devDependencies": {
1820
"@babel/core": "^7.12.9",

0 commit comments

Comments
 (0)