前提・実現したいこと
初質問で至らないところがあればすみません。自分は趣味でwebページなどを作っています。
gatsby.jsにてwebページを作っていますが、変数で横幅や縦幅を決めることができる表テーブルをコンポーネントできないか試していたところ、以下のようなエラーメッセージが出てしまいました。解決方法はわかりますでしょうか。アロー関数の部分が怪しいとは思うのですが。
自分は初心者なため、for文の中の記述も非常に怪しいです。LastTableにfilterメソッドでできた配列を格納しようとしているところも上手くif文の条件式がかけているか自信がありません。
発生している問題・エラーメッセージ
Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it.
該当のソースコード
js
1//(Table.js) 2import * as React from "react" 3import PropTypes from "prop-types" 4 5 6const Table = ({ WidthTable,textarray,ElementinTable,JoinTable,LastTable }) => ( 7 ElementinTable = textarray.map((textarray) => 8 <td> 9 {textarray} 10 </td>), 11 (()=>{ 12 for(let i = 0;i<(textarray.length-1);i++){ 13 if(i%(WidthTable-1) === 0 && i!==0 || i===0){ 14 LastTable = ElementinTable.filter(ElementinTable => ElementinTable.length-1 <= i && ElementinTable.length%WidthTable < WidthTable ) 15 JoinTable = 16 <tr> 17 {LastTable} 18 </tr> 19 } 20 if(i===(textarray-1)){ 21 return(<table><tbody> 22 {JoinTable} 23 </tbody></table>); 24 } 25 } 26 }) 27) 28 29 30 31Table.propTypes = { 32 WidthTable: PropTypes.number, 33 textarray: PropTypes.arrayOf(PropTypes.string), 34 ElementinTable: PropTypes.arrayOf(PropTypes.string), 35 JoinTable: PropTypes.arrayOf(PropTypes.string), 36 CompletedTable: PropTypes.arrayOf(PropTypes.string), 37} 38 39Table.defaultProps = { 40 text: `デフォルト`, 41} 42 43export default Table
js
1//(index.js内で渡している変数の値) 2<Table WidthTable={2} textarray={["aaa","aaa"]} /> 3
試したこと
JSXの中で、for文をかこうとして、アロー関数を使ったのが原因だと思うのですが、地の文で書いてもエラーが出てしまうため、弱っています。
補足情報(FW/ツールのバージョンなど)
gatsby.js
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/24 07:50 編集
2021/11/24 08:26
2021/11/24 18:32 編集