Skip to content

Commit 0297eb0

Browse files
Defines type component ListView
1 parent d1ade23 commit 0297eb0

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
"query-string": "^7.0.1",
2626
"react": "17.0.1",
2727
"react-fast-compare": "^3.2.0",
28-
"react-hook-form": "^7.11.0",
29-
"react-i18next": "^11.11.2",
28+
"react-hook-form": "^7.11.1",
29+
"react-i18next": "^11.11.3",
3030
"react-native": "0.64.1",
3131
"react-native-dotenv": "^3.1.1",
3232
"react-native-error-boundary": "^1.1.10",
@@ -40,7 +40,7 @@
4040
"react-native-unimodules": "^0.14.5",
4141
"react-native-vector-image": "^0.3.2",
4242
"react-navigation-heavy-screen": "^1.2.1",
43-
"react-query": "^3.18.1",
43+
"react-query": "^3.19.0",
4444
"recoil": "^0.3.1"
4545
},
4646
"devDependencies": {

src/common/components/ListView/ListView.props.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import {ListRenderItem} from 'react-native';
22

3-
export interface IRefreshListViewProps {
3+
export interface IRefreshListViewProps<ItemT> {
44
refreshState: number;
55
onHeaderRefresh?: (state: number) => void;
66
onFooterRefresh?: (state: number) => void;
7-
data: any[];
7+
data: ReadonlyArray<ItemT>;
88

99
listRef?: any;
1010

@@ -18,14 +18,14 @@ export interface IRefreshListViewProps {
1818
footerNoMoreDataComponent?: any;
1919
footerEmptyDataComponent?: any;
2020

21-
renderItem: ListRenderItem<any> | null | undefined;
21+
renderItem: ListRenderItem<ItemT> | null | undefined;
2222
}
2323

24-
export type IListViewProps = {
24+
export type IListViewProps<ItemT> = {
2525
/* Is there more */
2626
hasMore: boolean;
2727
/* List data */
28-
dataSource: any[];
28+
dataSource: ReadonlyArray<ItemT>;
2929
/* Pull-down refresh function */
3030
refresh: () => void;
3131
/* Pull up and load product data function */
@@ -35,7 +35,7 @@ export type IListViewProps = {
3535
/* Empty data display */
3636
emptyDataComponent?: React.ReactNode;
3737
/* Render ui */
38-
renderRow: ListRenderItem<any> | any;
38+
renderItem: ListRenderItem<ItemT> | null | undefined;
3939
/* Remaining parameters */
4040
[key: string]: any;
4141
};

src/common/components/ListView/RefreshListView.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export enum RefreshState {
1919
}
2020
let callOnScrollEnd: boolean;
2121

22-
const RefreshListView = (props: IRefreshListViewProps) => {
22+
const RefreshListView = <ItemT extends {}>(props: IRefreshListViewProps<ItemT>) => {
2323
function onHeaderRefresh() {
2424
if (shouldStartHeaderRefreshing()) {
2525
props.onHeaderRefresh &&

src/common/components/ListView/index.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {IListViewProps} from './ListView.props';
44
import {memo} from 'react';
55
import isEqual from 'react-fast-compare';
66

7-
const ListView = (props: IListViewProps) => {
7+
const ListView = <ItemT extends {}>(props: IListViewProps<ItemT>) => {
88
const {
99
dataSource,
1010
refresh,
@@ -15,7 +15,7 @@ const ListView = (props: IListViewProps) => {
1515
...args
1616
} = props;
1717
const [refreshState, setRefreshState] = useState<number>(RefreshState.Idle);
18-
const [listData, setListData] = useState<any[]>([]);
18+
const [listData, setListData] = useState<ItemT[]>([]);
1919
const [loadType, setLoadType] = useState<string>();
2020

2121
useEffect(() => {
@@ -68,7 +68,7 @@ const ListView = (props: IListViewProps) => {
6868
<RefreshListView
6969
{...args}
7070
data={listData}
71-
renderItem={({item, index}) => renderRow(item, index)}
71+
renderItem={renderRow}
7272
refreshState={refreshState}
7373
onHeaderRefresh={onHeaderRefresh}
7474
onFooterRefresh={onFooterRefresh}

0 commit comments

Comments
 (0)