【问题标题】:React Native - global boolean isnt updating?React Native - 全局布尔值没有更新?
【发布时间】:2020-10-08 21:26:03
【问题描述】:

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

这里发生了什么?如何不断获取这个全局变量的更新值?

【问题讨论】:

  • 你需要 redux、react context 或类似的东西才能做你想做的事情。

标签: reactjs react-native react-redux global


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2015-08-18
    相关资源
    最近更新 更多