警告:flattenChildren(...):遇到两个孩子用同一把钥匙,

时间:2017-07-11 06:39:46

标签: react-native

我收到以下错误警告:flattenChildren(...):遇到两个孩子用同一把钥匙,

使用React Native时,listview

这是我的代码

// Render the row for the list view
    _renderRow(rowData, sectionID, rowID, highlightRow) {
        return (
            <TouchableHighlight underlayColor={'#ccc'} onPress={() => this._onPressProject({projectName:rowID.projectName, projectId:rowID.projectId})}>
                <View>
                    <View style={styles.row}>
                        <Text style={styles.text}>{rowID.projectName}</Text>
                    </View>
                </View>
            </TouchableHighlight>
        );
    }

3 个答案:

答案 0 :(得分:0)

您需要设置每行中放置的组件的key道具。 可能可以使用你在那里的那个projectId

_renderRow(rowData, sectionID, rowID, highlightRow) {
    return (
        <TouchableHighlight key={rowID.projectId} underlayColor={'#ccc'} onPress={() => this._onPressProject({projectName:rowID.projectName, projectId:rowID.projectId})}>
            <View>
                <View style={styles.row}>
                    <Text style={styles.text}>{rowID.projectName}</Text>
                </View>
            </View>
        </TouchableHighlight>
    );
}

答案 1 :(得分:0)

每当循环渲染某个元素时,您需要提供key。每个key都应该是唯一的。

“key”是创建元素列表时需要包含的特殊字符串属性。

您可以阅读有关key from documentation

的更多信息

答案 2 :(得分:0)

所以这与列表视图渲染行无关,但是下面的JS代码,不确定为什么我应该能够将对象推入数组

for(j = 0; j < projectLength; j++) {
                project = projects[j];
                // Add Unique Row ID to RowID Array for Section
                rowIDs[i].push({proejctName:project.name. projectId:project.id});

                // Set Value for unique Section+Row Identifier that will be retrieved by getRowData
                dataBlob[company.id + ':' + project.id] = project;
            }

我修好但只是做了以下

rowIDs[i].push(project.name + ':' + project.id);