好的,我在这里读过类似的问题,但不理解为什么我的动态全局变量在2个文件中显示2个不同的值/没有更新。
我在文件1中声明了一个全局布尔值,就像在此文件中导出的组件上方一样。我不导出此全局变量:
global.isinLongPress = false;
class FloatingMenu extends React.PureComponent {
//this component
在整个文件1中,我根据是否已点击TouchableOpacity
来更改此布尔值。我在这里执行此操作,布尔值显示为true
:
handleLongMenuPress = () => {
const { isOpen, onMenuToggle } = this.props;
onMenuToggle(true);
global.isinLongPress = true;
console.log('long menu press ', global.isinLongPress);
};
在文件2中,我想访问此变量。这是在先前的console.log之后打印的,但是它将布尔值读取为false
:
console.log(global.isinLongPress);
这是怎么回事?如何不断获取此全局变量的更新值?
答案 0 :(得分:0)
更新任何非状态变量都不会导致组件重新渲染并可以访问最新值,它们将显示上次渲染时设置的值。您能想象在更新任何单个变量时是否重新渲染了整个应用程序吗?
要实现此行为,您可以使用React Context
API,这是一种简单的全局状态解决方案,更多选择包括Zustand,Jotai,MobX,Redux等。