[解決済み】警告。配列またはイテレータの各子供は、一意の「キー」プロパティを持つ必要があります。ListView`のレンダリングメソッドを確認する。
質問
でアプリを作りました。
ReactNative
iOSとandroidの両方で
ListView
. リストビューに有効なデータソースを入力すると、画面の下部に次のような警告が表示されます。
警告 配列またはイテレータの各子要素は、一意の "key" を持つ必要があります。 プロップ のレンダーメソッドをチェックしてください。
ListView
.
この警告は何のためにあるのでしょうか?メッセージの後、彼らは次のようにリンクしています。 このページ そこには、react nativeとは全く関係なく、Webベースのreactjsについて全く異なることが議論されています。
私のListViewはこれらの記述で構築されています。
render() {
var store = this.props.store;
return (
<ListView
dataSource={this.state.dataSource}
renderHeader={this.renderHeader.bind(this)}
renderRow={this.renderDetailItem.bind(this)}
renderSeparator={this.renderSeparator.bind(this)}
style={styles.listView}
/>
);
}
私のDataSourceは以下のような構成になっています。
var detailItems = [];
detailItems.push( new DetailItem('plain', store.address) );
detailItems.push( new DetailItem('map', '') );
if(store.telefon) {
detailItems.push( new DetailItem('contact', store.telefon, 'Anrufen', 'fontawesome|phone') );
}
if(store.email) {
detailItems.push( new DetailItem('contact', store.email, 'Email', 'fontawesome|envelope') );
}
detailItems.push( new DetailItem('moreInfo', '') );
this.setState({
dataSource: this.state.dataSource.cloneWithRows(detailItems)
});
といったものでListView-Rowsをレンダリングしています。
return (
<TouchableHighlight underlayColor='#dddddd'>
<View style={styles.infoRow}>
<Icon
name={item.icon}
size={30}
color='gray'
style={styles.contactIcon}
/>
<View style={{ flex: 1}}>
<Text style={styles.headline}>{item.headline}</Text>
<Text style={styles.details}>{item.text}</Text>
</View>
<View style={styles.separator}/>
</View>
</TouchableHighlight>
);
警告を除いては、すべてがうまくいき、期待通りです。
私の "DetailItem"-Class に key-property を追加しても、問題は解決されませんでした。
これは、"cloneWithRows"の結果としてListViewに実際に渡されるものです。
_dataBlob:
I/ReactNativeJS( 1293): { s1:
I/ReactNativeJS( 1293): [ { key: 2,
I/ReactNativeJS( 1293): type: 'plain',
I/ReactNativeJS( 1293): text: 'xxxxxxxxxx',
I/ReactNativeJS( 1293): headline: '',
I/ReactNativeJS( 1293): icon: '' },
I/ReactNativeJS( 1293): { key: 3, type: 'map', text: '', headline: '', icon: '' },
I/ReactNativeJS( 1293): { key: 4,
I/ReactNativeJS( 1293): type: 'contact',
I/ReactNativeJS( 1293): text: '(xxxx) yyyyyy',
I/ReactNativeJS( 1293): headline: 'Anrufen',
I/ReactNativeJS( 1293): icon: 'fontawesome|phone' },
I/ReactNativeJS( 1293): { key: 5,
I/ReactNativeJS( 1293): type: 'contact',
I/ReactNativeJS( 1293): text: '[email protected]',
I/ReactNativeJS( 1293): headline: 'Email',
I/ReactNativeJS( 1293): icon: 'fontawesome|envelope' },
I/ReactNativeJS( 1293): { key: 6, type: 'moreInfo', text: '', headline: '', icon: '' } ] },
1つのキーがわかるように、各レコードはキーのプロパティを持っています。警告はまだ残っています。
どうすればいいですか?
私は まさに という問題で、上記の提案をいくつか見て、ようやく解決しました。
それは、(少なくとも私にとっては)renderSeparatorメソッドから返すコンポーネントにキー('key'というプロップ)を供給する必要があることが判明しました。renderRowやrenderSectionHeaderにキーを追加しても何も起こらないが、renderSeparatorにキーを追加すると警告が消えた。
お役に立てれば幸いです。
関連
-
[解決済み] FacebookアプリケーションにCanvasを追加し、CanvasのURLを確保する方法
-
[解決済み] プラットフォームへのアクセス不可。Facebookプラットフォームの変更に伴い、アクセスが一時的に無効になっています。
-
[解決済み] メッセンジャーのボットです。www.facebook.com にログインし、表示される指示に従うまで、アプリにアクセスできません。指示はありませんでした。
-
[解決済み] Facebook API通信のIPアドレスとポート番号
-
[解決済み] FacebookやTwitterの新しいURLのシェバング/ハッシュバン(#!)は何のため?
-
[解決済み] このアプリの開発者は、このアプリをFacebookログイン用に正しく設定していないのでは?
-
[解決済み] Facebook Graph API v2.0+ - /me/friends が空、または私のアプリケーションを使用している友人のみを返す。
-
[解決済み] FacebookアプリのOauth Redirect URIはどこに設定するのですか?
-
[解決済み] Facebookのログインメッセージ。"URL Blocked: このリダイレクトは、リダイレクトURIがアプリのクライアントOAuth設定にホワイトリストされていないため、失敗しました。"
-
[解決済み] Open Graph名前空間宣言。XMLNSを使ったHTMLか、headプレフィックスを使ったHTMLか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】警告。配列またはイテレータの各子供は、一意の「キー」プロパティを持つ必要があります。ListView`のレンダリングメソッドを確認する。
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み] FacebookとLinkedInに特定の値をフィードするために必要なメタタグ?
-
[解決済み] facebook ピクセル。PageViewとViewContentの比較
-
[解決済み] facebookアプリのIDの所有者を確認するにはどうすればよいですか?
-
[解決済み] JavaScriptを使わずにFacebookのリンクを共有する
-
[解決済み] FacebookやTwitterの新しいURLのシェバング/ハッシュバン(#!)は何のため?
-
[解決済み] Facebook Graph API v2.0+ - /me/friends が空、または私のアプリケーションを使用している友人のみを返す。
-
[解決済み】FB OpenGraph og:imageが画像を引っ張ってこない(httpsの可能性?)
-
[解決済み] Facebookアーキテクチャ【クローズド