React-Native:即使我包含密钥,数组中的每个子节点也应该有唯一的密钥

时间:2017-11-05 10:30:44

标签: react-native

我刚刚开始React-Native,在处理数组的map时遇到了一个问题。因为它需要一个唯一的键用于所有元素。 我已经在render方法中指定了键,但我仍然收到警告。 这是代码

import React, { Component } from 'react';
import {Text , ScrollView} from 'react-native';
import axios from 'axios';
import AlbumDetail from './AlbumDetail'
export default class AlbumList extends Component {
  state = {albums: ['Fetching Data...']};
  componentWillMount() {
    console.log('fetching data');
    // Make a request
    axios.get('http://rallycoding.herokuapp.com/api/music_albums')
      .then(response => this.setState({albums: response.data}));
  }
  renderAlbums() {
    return this.state.albums.map(album =>
      <AlbumDetail
        key = {album.title}
        album = {album}
      />
    );
  }
  render() {
    return(
      <ScrollView>
        {this.renderAlbums()}
      </ScrollView>
    );
  }
}

即使包含密钥

,这也是我收到的警告
ExceptionsManager.js:73 Warning: Each child in an array or iterator should have a unique "key" prop.

Check the render method of `AlbumList`. See https://fb. me/react-warning-keys for more information.
    in AlbumDetail (at AlbumList.js:16)
    in AlbumList (at index.js:21)
    in RCTView (at View.js:113)
    in View (at index.js:19)
    in FirstApp (at renderApplication.js:35)
    in RCTView (at View.js:113)
    in View (at AppContainer.js:102)
    in RCTView (at View.js:113)
    in View (at AppContainer.js:122)
    in AppContainer (at renderApplication.js:34)

1 个答案:

答案 0 :(得分:0)

看看你的错误。它说错误是在AlbumList的渲染调用中。你指定的代码很好。