javascript - 在 React Native 中更新 ListView

标签 javascript listview react-native datasource

我现在有几个建议的解决方案,但无法让它们发挥作用。我在通过正确复制旧数组来更新 ListView 时遇到问题。 到目前为止我的解决方案(不起作用:-()不重新渲染 ListView 。

const data = [{
            id: 1,
            selected: true,
        }, {
            id: 2,
            selected: false,
        }, {
            id: 3,
            selected: false,
        }]

        const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});

        this.state = {
            dataSource: ds.cloneWithRows(data),
            data: data,
        }

要更新行,我使用以下代码:

   _updateRow = (rowData, rowID) => {
    let newArray = this.state.data.slice();

    newArray.map((o, index) => {
        if (o.id = rowData.id){
            o.selected = true;
        }
        else {
            o.selected = false;
        }
    })


    this.setState({
        dataSource: this.state.dataSource.cloneWithRows(newArray),
        data: newArray
    })
}

我想将属性(选定的)从索引更改为 true,并将所有其他对象(选定的)更改为 false。 希望有人能帮忙。寻找最干净的解决方案。

问候

最佳答案

是啊!!! 解决了。 代码如下:

_updateRow = (rowData, rowID) => {
    let newArray = this.state.data.slice();

    newArray.map((o, index) => {
            newArray[index] = {...o, selected: true};
        else
            newArray[index] = {...o, selected: false};

    })

    this.setState({
        dataSource: this.state.dataSource.cloneWithRows(newArray),
        data: newArray
    })
}

有人有更好的解决方案吗?

关于javascript - 在 React Native 中更新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694106/

相关文章:

javascript - slider 相对于 slider 拇指的显示值 native react

react-native - 使用 React Native 的 Expo PDF 查看器

javascript - NodeJS&Glob : any number of filenames, 文件扩展名和必须由单个字符串排除的文件?

java - 阻止标题 View 在 ListView 中被单击?

javascript - D3.js v4 元素在拖动后会回到初始位置

android - 收到新短信时,短信接收应用程序崩溃 - Android

Android - ListView 没有收到带有可点击链接的 TextView 的 OnItemClick

react-native - 不弹出 Redux 的测试 Jest React-Native Expo CRNA

javascript - 带私有(private)/公共(public)的单例对象 : Public function dependency problems

javascript - 向现有 Web 应用程序添加新按钮