【问题标题】:Should we use class variable in react native?我们应该在本机反应中使用类变量吗?
【发布时间】:2021-08-28 04:24:00
【问题描述】:

我倾向于尽可能避免使用类变量,可能我 99% 的代码都是使用 state 完成的。总有一种印象,我们应该避免使用它,因为 React 仅在更改为 stateprops 时会重新渲染 UI。

最近我的同事开始使用类变量,用于存储一些硬编码值,如下所示。我不明白为什么我们不能将这个硬编码的值存储在 state 中,尽管 value 实际上永远不会在 app.js 中更新。而且这种类型的赋值仍然有效。

this.Arr = [
      { option: 'Product'},
      { option: 'Technical'},
      { option: 'Enquiry'},
      { option: 'Report'},
    ];

那么,我们应该在 react native 中使用类变量吗?你在这里的支持论点是什么?

更新

经过对以下问题的进一步阅读,我得出了一个结论......

读数:

  1. ReactJS - What is difference between component state and class variable?
  2. Should a React component use (fixed) values not on state or props?

结论:

  1. 与往常一样,将可能发生变异的变量保留在状态变量中。
  2. 可以使用类变量存储硬编码值。但是,将它们移动到一个常量文件中可能是有意义的,您可以从该文件中读取所有修复值。
  3. 使用类变量不是 ReactJS/ReactNative 的反模式。由于该值不需要 UI 重新渲染,因此存储在类变量中不是问题。

感谢任何人进一步发表评论。谢谢。

【问题讨论】:

  • 状态适用于变化的东西,或者不是绝对静态的。将不可更改的东西放入状态并没有本质上的错误,它只是没有多大意义,而且混乱的代码甚至比低效的代码更糟糕。如果我是你,我会避免它。
  • 正确,这也是我的理解。所以这里的重点是混淆代码。

标签: javascript react-native


【解决方案1】:

如果这个变量永远不会改变并且不依赖于你的组件范围内的任何东西,我建议将它作为一个常量存储在你的组件之外。

如果您确实需要根据组件范围内的内容生成它,则需要将其存储为状态或类变量。

我建议您将其存储为状态如果您需要在该变量更改时更新您的 UI(使用 setState)。如果您不需要它,最好将其存储为类变量。原因是,如果您将其存储在一个状态中,而实际上不需要在该变量更改时更新 UI,您最终会导致不必要的重新渲染,这可能会很昂贵。

此外,在我看来,在状态中存储定义上不是状态的东西比将其单独存储为类变量更令人困惑。

顺便说一句,如果您的项目允许您从类组件转移到挂钩,我强烈建议您这样做。

【讨论】:

  • 当该变量发生变化时,您所说的昂贵是什么意思?这里有什么贵的?就像我说的,我们确定这是一个硬编码值(对于这个组件),它永远不会改变。
  • 如果你在state里面存了东西,然后用setState去改变它,就会导致re-render,这就是代价。如果你永远不会改变它,就没有理由将它存储在状态中——因为根据定义它不是状态。我认为在这种情况下将它存储在一个状态中会更令人困惑,所以我会避免它。
  • 我已经说过,这是一个硬编码的值。它不会改变。
  • 同意这里的评论,我认为我们应该将常量值存储在组件之外,并将突变值保存在状态变量中。
猜你喜欢
  • 1970-01-01
  • 2021-10-03
  • 2017-10-08
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
相关资源
最近更新 更多