前提・実現したいこと
Firebaseからデータをとって、データを検索するという仕組みを実装したいです。
しかし、レンダーにリターンが無いとエラー表示されてしまいます。
発生している問題・エラーメッセージ
Unhandled Runtime Error Error: Component(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.
該当のソースコード
ページ表示用
pages/fire_find.js
js
1import Layout from '../components/Layout'; 2import Firefind from '../components/Firefind'; 3 4export default () => { 5 <Layout header="Fire" title="Sample data."> 6 <Firefind /> 7 </Layout> 8};
コンポーネント
components/Firefind.js
js
1import React, { Component } from 'react'; 2import firebase from "firebase"; 3import "firebase/storage"; 4 5class Firefind extends Component { 6 style = { 7 borderBottom: "1px solid gray" 8 } 9 10 //初期化。ステートとイベント用メソッドの設定 11 constructor(props) { 12 super(props); 13 this.state = { 14 input: '', 15 data: [] 16 } 17 this.doChange = this.doChange.bind(this); 18 this.doAction = this.doAction.bind(this); 19 } 20 21 //入力フィールドに入力時の処理 22 doChange(e) { 23 this.setState({ 24 input: e.target.value 25 }) 26 } 27 28 //ボタンクリック時の処理 29 doAction(e) { 30 this.findFireData(this.state.input); 31 } 32 33 //検索の実行 34 findFireData(s) { 35 let db = firebase.database(); 36 let ref = db.ref('sample/'); 37 let self = this; 38 ref.orderByKey().equalTo(s).on('value', (snapshot) => { 39 self.setState({ 40 data:snapshot.val() 41 }); 42 }); 43 } 44 45 //テーブルの内容の作成 46 getTableData() { 47 let result = []; 48 if (this.state.data == null || this.state.data.length == 0) { 49 return [<tr key="0"><th>NO DATA.</th></tr>]; 50 } 51 for (let i in this.state.data) { 52 result.push(<tr key={i}> 53 <th>{this.state.data[i].ID}</th> 54 <th>{this.state.data[i].name}</th> 55 <th>{this.state.data[i].message}</th> 56 </tr>); 57 } 58 return result; 59 } 60 61 //レンダリング 62 render() { 63 return (<div> 64 <input type="text" onChange={this.doChange} style={this.style} value={this.state.input} /> 65 <button onClick={this.doAction}>Find</button> 66 <hr /> 67 <table><tbody> 68 {this.getTableData()} 69 </tbody></table> 70 </div>) 71 } 72} 73 74export default Firefind;
試したこと
書籍を元にコードを入力し、テキスト比較も試しましたが異常は見当たりません。
他のfirebaseの機能(データを表示する)の時は、問題なく動きました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/26 22:56
2020/08/26 23:05