【问题标题】:Invariant Violation: ListView has been removed. But不变违规:ListView 已被删除。但
【发布时间】:2019-07-18 10:44:38
【问题描述】:

我从课程中获得了这段代码,以及我如何理解我的错误,即 ListView 已从 ReactNative 中删除。我该如何解决这个问题?

我尝试将所有 ListView 标记替换为 FlatList。但没有成功。

class LibraryList extends Component {
 componentWillMount() {
   const ds = new ListView.DataSource({
    rowHasChanged: (r1, r2) => r1 !== r2
 });

  this.dataSource = ds.cloneWithRows(this.props.libraries);
 }

renderRow(library) {
  return <ListItem library={library} />;
}

render() {
  return (
   <ListView
     dataSource={this.dataSource}
     renderRow={this.renderRow}
    />
   );
  }
}

【问题讨论】:

  • 您是否将其正确转换为平面列表?将dataSource 更改为datarenderRow 更改为renderItem?
  • 是的,现在可以使用了)data={this.props.libraries} renderItem={this.renderItem} keyExtractor={(library) => library.title}

标签: react-native react-redux version


【解决方案1】:

在 react native 0.60 中不推荐使用 List VIew。所以快速解决方法是使用 deprecated-react-native-listview

需要补充

从“deprecated-react-native-listview”导入 ListView;

而不是

从“react-native”导入 ListView;

https://www.npmjs.com/package/deprecated-react-native-listview

【讨论】:

  • 我没有 ListView 组件,但它仍然返回不变的违规错误 react native
  • 那么它应该来自 node_modules 中的另一个体面,比如在“react-native-modal-dropdown”中你需要在包文件中进行更改
  • 你找到解决办法了吗!
  • 如果您没有使用 ListView 组件,那么它应该来自另一个库,因此您必须更改该库的 package.json 或向库所有者报告以更改包。 json 这样你就不必每次都这样做。如果可能,共享错误日志
【解决方案2】:
class LibraryList extends Component{
    renderRow({item}) {
        return <ListItem library = { item } />;
    }

    render() {
        return(
            <FlatList
                data = {this.props.libraries}
                renderItem = {this.renderRow}
            />
        );
    }
}

【讨论】:

  • 我没有 ListView 组件,但它仍然返回不变的违规错误 react native
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 2022-09-30
  • 1970-01-01
相关资源
最近更新 更多