React Native-全局布尔isnt更新?

时间:2020-10-08 21:26:03

标签: reactjs react-native react-redux global

好的,我在这里读过类似的问题,但不理解为什么我的动态全局变量在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);

这是怎么回事?如何不断获取此全局变量的更新值?

1 个答案:

答案 0 :(得分:0)

更新任何非状态变量都不会导致组件重新渲染并可以访问最新值,它们将显示上次渲染时设置的值。您能想象在更新任何单个变量时是否重新渲染了整个应用程序吗?

要实现此行为,您可以使用React Context API,这是一种简单的全局状态解决方案,更多选择包括Zustand,Jotai,MobX,Redux等。