Why is my react component not rendering from inside another?

I want to display a grid of 50 x 50 cells. I created a cell, board and game component. The cell component is not rendering inside the board component so I just see a blue screen. I am new to react. Please I just want to understand and learn. Thank you

Cell Component:

export default function Cell({ value, colour, rowIndex, colIndex, clickAction }) {
      return (
        <div
          onClick={(e) => clickAction(e, rowIndex, colIndex)}
          style={{
            border: '1px solid black',
            display: 'flex',
            placeContent: 'center center',
            alignItems: 'center',
            backgroundColor: colour,
          }}
        >{value}
        </div>
      )
}

Board Component:

import '../App.css'

export default function Board({ row, column, pix }) {
      return (
        <div style={{
          display: 'grid',
          gridTemplateColumns: `repeat(50, 25px)`,
          gridTemplateRows: `repeat(50, 25px)`,
        }}>
        </div>
      )
}

Game Component:

import Cell from './Components/Cell'
import Board from './Components/Board'
import { useState } from 'react'
import './App.css'

export default function Game() {
      const boardDimensions = {
        width: 50,
        height: 50
      }
    
      const array2D = Array(boardDimensions.height).fill().map((row) => Array(boardDimensions.width).fill(0))
      const [fiboCells, setFiboCells] = useState(array2D)
    
      return (
        <div className="center">
          <Board row={50} column={50} pix={25}>
            {
              fiboCells.map((row, i) => row.map((col, j) => (
                <Cell
                  value={col}
                  rowIndex={i}
                  colIndex={j}
                  colour="red"
                />
              )))
            }
          </Board>
        </div>
      )
}

App Component:

import './App.css';
import Game from './Game'

function App() {
      return (
        <Game/>
      );
}

export default App;

App.css:

.center {
  display: flex;
  place-content: center center;
  align-items: center;
  flex-direction: column;
  background-color: #00308F;
  height: 100vh;
  font-size: 12px;
}

I expect to see a 50 x 50 grid of zeros

>Solution :

Since you are passing Cells as children of the Board component, the board component should be like this

import '../App.css'

export default function Board({ row, column, pix, children }) {
      return (
        <div style={{
          display: 'grid',
          gridTemplateColumns: `repeat(50, 25px)`,
          gridTemplateRows: `repeat(50, 25px)`,
        }}>
            {children}
        </div>
      )
}

Leave a Reply