【问题标题】:Invariant Violation: A VirtualizedList contains a cell which itself contains more than one VirtualizedList不变违规:一个 VirtualizedList 包含一个单元格,该单元格本身包含多个 VirtualizedList
【发布时间】:2018-08-08 13:38:28
【问题描述】:

完整的错误是:

Invariant Violation:一个 VirtualizedList 包含一个自身的单元格 包含多个相同方向的 VirtualizedList 父列表。您必须将唯一的 listKey 属性传递给每个兄弟列表。

我的每个FlatList 组件都有一个keyExtractor 属性。 react-native-elements 组件中的 List 中的每个项目都有一个 key 属性。

有人能解释一下这个问题的含义吗?

【问题讨论】:

    标签: react-native react-native-flatlist


    【解决方案1】:

    正如错误所说“您必须将唯一的 listKey 道具传递给每个兄弟列表。”类似 listKey="someUniqueString" 到 FlatList 的道具为我修复了这个错误

    【讨论】:

    • 我已经尝试过了,但它仍然给我同样的错误。你能提供一些其他的解决方案吗
    【解决方案2】:

    使用嵌套平面列表时出现此错误。我使用 listKey 而不是 keyExtractor。

    **listKey={(item, index) => 'D' + index.toString()}**
    

    【讨论】:

      【解决方案3】:

      如果您使用 FaltList 作为任何其他 FlatList 或 SectionList 的嵌套列表,那么您必须将唯一值传递给此道具 列表键

      listKey={this._keyExtractor}

      _keyExtractor = (item, index) => {
      return this.props.index+"_"+index+'_'+item.id+"_"+moment().valueOf().toString(); 
      }
      

      【讨论】:

        【解决方案4】:

        我收到了这个错误。但使用唯一字符串修复了

        listKey={moment().valueOf().toString()}
        

        【讨论】:

          【解决方案5】:

          FlatList 中使用ListKeykeyExtractor 属性来防止出现此错误或警告

          例子:

            listKey={(item, index) => `_key${index.toString()}`}
            keyExtractor={(item, index) => `_key${index.toString()}`}
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-01-13
            • 2012-08-05
            • 2017-09-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-29
            相关资源
            最近更新 更多