关于reactjs的快速问题所以我是新的React,我试图使井字游戏的应用程序。
目前,这是我所拥有的:App.js:
import logo from './logo.svg';
import './App.css';
import { Row } from './components/Row';
import {Board} from './components/Board'
function App() {
// App renders Row
return (
<div>
<Board />
</div>
);
}
export default App;
Board.js
import React from "react";
import { ReactDOM } from "react";
import { Row } from "./Row";
export function Board() {
return (
<div className="Board">
<Row />
<Row />
<Row />
</div>
)
}
Row.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Square } from './Square';
export function Row() {
return(
<div className='Row'>
<Square />
<Square />
<Square />
</div>
)
}
Square.js
import React, {useState} from 'react';
import ReactDOM from 'react-dom';
export function Square(props){
// Square is rendered by App
const [currLetter, changeLetter] = useState(" ");
function toggleLetter(str) {
if(str === " ") {return "X";}
else if(str === "X") {return "O";}
else if(str === "O") {return "X";}
}
return(
<div >
<button onClick={() => changeLetter(toggleLetter)} className='Square'> {currLetter} </button>
</div>
);
}
它运行得很好,但我想知道为什么当我这样写Square.js时它不起作用:
export function Square(props){
// Square is rendered by App
const [currLetter, changeLetter] = useState("X");
function toggleLetter(str) {
if(str === "X") {changeLetter("O");}
else if(str === "O") {changeLetter("X");}
}
return(
<div >
<button onClick={toggleLetter} className='Square'> {currLetter} </button>
</div>
);
}
为什么onClick不能直接接收toggleLetter呢?这是一个函数,对吗?
第二个问题这是我的CSS看起来像:
.Board {
display: flex;
flex-direction: column;
justify-content: space-between;
/* width: 55%;
height: 55%; */
margin-top: 18%;
}
.Row {
text-align: center;
/* position: absolute; */
/* left: 35%;
right: 50%;
top: 25%;
width: 25%;
height: 25%; */
display: flex;
flex-direction: row;
justify-content: center;
}
.Square {
/* position: absolute; */
width: 70px;
height: 70px;
border-color: #99ccff;
text-align: center;
font-size: xx-large;
font-family: 'Courier New', Courier, monospace;
}
/* .Row {
} */
.App-logo {
height: 40vmin;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s linear;
}
}
.App-header {
background-color: #282c34;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: #61dafb;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
body {
min-height: 100%;
margin: 0;
padding: 0;
background-color: #ffcccc;
}
html {
height: 100%;
}
我想做的是确保板子以身体为中心,因此以页面为中心。因为它是,它是在页面上的中心,但随后身体被移下。当我检查页面时,主体的顶部边缘被向下移动到与板的顶部边缘相同的水平,而不是主体在默认情况下的位置,而板在其中心。我该怎么解决?
它看起来像什么:
how-it's-going
1条答案
按热度按时间klsxnrf11#
所以,你有一个像这样的App组件:
向这个DIV添加一个className,类似这样:
然后在你的css上添加这个属性:
就是这样;)