A grid by definition has a set number of columns. What you can do though is defined a multiple of columns and apply a "column-span" rule to specific divs using grid-column.
grid-column
The grid-column CSS shorthand property specifies a grid item's
size and location within a grid column by contributing a line, a span,
or nothing (automatic) to its grid placement, thereby specifying the
inline-start and inline-end edge of its grid area.
Example uses 6 columns and each div spans either 2 or 3 columns to get the correct elements "per row". You can tweak the styles/layouts from here.
CSS:
.container {
display: grid;
grid-gap: 10px 12px;
grid-template-columns: repeat(6, auto);
justify-items: center;
}
JSX
<div className="App">
<div className="container">
<div className="item" style={{ gridColumn: 'span 3' }}>1</div>
<div className="item" style={{ gridColumn: 'span 3' }}>2</div>
<div className="item" style={{ gridColumn: 'span 2' }}>3</div>
<div className="item" style={{ gridColumn: 'span 2' }}>4</div>
<div className="item" style={{ gridColumn: 'span 2' }}>5</div>
<div className="item" style={{ gridColumn: 'span 3' }}>6</div>
<div className="item" style={{ gridColumn: 'span 3' }}>7</div>
</div>
</div>


You could even explicitly express the grid tracks you want them to be laid out on.
<div className="App">
<div className="container">
<div className="item" style={{ gridColumn: "2/4" }}>
1
</div>
<div className="item" style={{ gridColumn: "4/6" }}>
2
</div>
<div className="item" style={{ gridColumn: "1/3" }}>
3
</div>
<div className="item" style={{ gridColumn: "3/5" }}>
4
</div>
<div className="item" style={{ gridColumn: "5/7" }}>
5
</div>
<div className="item" style={{ gridColumn: "2/4" }}>
6
</div>
<div className="item" style={{ gridColumn: "4/6" }}>
7
</div>
</div>
</div>

On a 5-track grid, so you don't need to "center" between tracks.
grid-template-columns: repeat(5, auto);
...
<div className="App">
<div className="container">
<div className="item" style={{ gridColumn: "2" }}>
1
</div>
<div className="item" style={{ gridColumn: "4" }}>
2
</div>
<div className="item" style={{ gridColumn: "1" }}>
3
</div>
<div className="item" style={{ gridColumn: "3" }}>
4
</div>
<div className="item" style={{ gridColumn: "5" }}>
5
</div>
<div className="item" style={{ gridColumn: "2" }}>
6
</div>
<div className="item" style={{ gridColumn: "4" }}>
7
</div>
</div>
</div>

Hopefully by this point it is more clear how to use the grid tracks to layout content where you like.