react组件中的共享变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Feature.tsx
import React from react;

// 定义全局变量
let pageNumber = 1;

const Feature = () => {

const onLoadMore = () => {
setLoading(true);
setListData(
data.concat(
[...new Array(pageSize)].map(() => ({
createdAt: '',
uri: '',
loading: true,
})),
),
);
pageNumber++;

request.get(list, { pageNumber, pageSize }).then(res => {
// ...
})

return (
<div onClick={onLoadMore}>加载更多</div>
)
}
export default Feature;

当前文件中,我们在 Feature 函数前面定义了一个pageNumber变量,每次调用onLoadMorepageNumber++,这个逻辑在当前页面没有问题。
当我们离开这个组件,下次重新进入时,pageNumber的值不是预期的1,而是1+onLoadMore的调用次数。也就是说Feature函数前定义的变量,不会随Feature函数的销毁而销毁。

而且这个变量是被所有 Feature组件共享的。

参考: https://zh-hans.react.dev/learn/referencing-values-with-refs#fix-debouncing

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×