【问题标题】:compare different state array in getDerivedStateFromProps比较 getDerivedStateFromProps 中的不同状态数组
【发布时间】:2018-10-09 01:53:00
【问题描述】:

如何比较数组中的状态?我不能使用!== 或使用.length

static getDerivedStateFromProps(props, state) {
    if(props.languages !== statelanguages)) {
      return {
        languages: props.languages
      }
    }
    return null
  }

我可以使用 lodash 中的 isEqual 但这不会过分吗?

【问题讨论】:

    标签: javascript reactjs lodash


    【解决方案1】:

    这取决于您的检查应该有多彻底。如果您想绝对确定 2 个数组完全匹配——这意味着它们的所有元素都匹配——那么简单的长度或引用检查是不够的。你需要lodash.isEqual 或类似的东西。

    请注意,如果props.languagesstatelanguages“引用”相等,lodash.isEqual 将非常快,这意味着如果props.languages === statelanguages 评估为真,它将立即返回真。如果不是,那么它会继续检查长度检查和深度相等检查 - 如果您的数组大小很大,最后一个可能会变得很昂贵。

    【讨论】:

    • 这取决于您的数组大小。你的数组有多大?
    • @Melissa,在成为实际问题之前不要担心性能优化。
    • 您也可以选择 react-fast-compare 或 ImmutableJS 之类的东西,但我同意 Matt - 在您真正看到性能问题之前不要担心。
    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多