我正在按照the official reactjs说明创建示例应用。我的节点版本是6.9.0。
我根据官方网站使用以下说明创建了示例反应应用程序,它应该显示一个空的tic tac toe表:
npm install -g create-react-app
create-react-app my-app
cd my-app
已更改为 my-app 目录
按照指示删除了源目录中的默认文件。现在 我的 index.js 看起来像这样
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
然后我跑了yarn start
但我看到的只是空白屏幕没有tic tac toe table。并在控制台中发出警告
Compiled with warnings.
./src/index.js
Line 1: 'React' is defined but never used no-unused-vars
Line 2: 'ReactDOM' is defined but never used no-unused-vars
Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.
答案 0 :(得分:2)
你应该创建一些组件/元素/,或者设置样式,然后调用ReactDOM
将你的组件渲染到底层的html,然后你就可以了。
React
用于处理JSX和React组件的创建ReactDOM
将用于将创建的元素渲染为dom。见这里:https://reactjs.org/blog/2015/10/01/react-render-and-top-level-api.html
所以像
这样的东西ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
到您的代码中,如果您的index.html
id="root"
标记内有<body>
元素,您将获得一些内容
答案 1 :(得分:1)
你错过了第4步和第4步的最后部分。 5:
- 使用this CSS code在src /文件夹中添加名为index.css的文件。
- 使用this JS code在src /文件夹中添加名为index.js的文件。
醇>
index.css
body {
font: 14px "Century Gothic", Futura, sans-serif;
margin: 20px;
}
ol, ul {
padding-left: 30px;
}
.board-row:after {
clear: both;
content: "";
display: table;
}
.status {
margin-bottom: 10px;
}
.square {
background: #fff;
border: 1px solid #999;
float: left;
font-size: 24px;
font-weight: bold;
line-height: 34px;
height: 34px;
margin-right: -1px;
margin-top: -1px;
padding: 0;
text-align: center;
width: 34px;
}
.square:focus {
outline: none;
}
.kbd-navigation .square:focus {
background: #ddd;
}
.game {
display: flex;
flex-direction: row;
}
.game-info {
margin-left: 20px;
}
index.js
class Square extends React.Component {
render() {
return (
<button className="square">
{/* TODO */}
</button>
);
}
}
class Board extends React.Component {
renderSquare(i) {
return <Square />;
}
render() {
const status = 'Next player: X';
return (
<div>
<div className="status">{status}</div>
<div className="board-row">
{this.renderSquare(0)}
{this.renderSquare(1)}
{this.renderSquare(2)}
</div>
<div className="board-row">
{this.renderSquare(3)}
{this.renderSquare(4)}
{this.renderSquare(5)}
</div>
<div className="board-row">
{this.renderSquare(6)}
{this.renderSquare(7)}
{this.renderSquare(8)}
</div>
</div>
);
}
}
class Game extends React.Component {
render() {
return (
<div className="game">
<div className="game-board">
<Board />
</div>
<div className="game-info">
<div>{/* status */}</div>
<ol>{/* TODO */}</ol>
</div>
</div>
);
}
}
// ========================================
ReactDOM.render(
<Game />,
document.getElementById('root')
);
答案 2 :(得分:1)
这仅表示您的项目已配置了eslint来捕获未使用的变量。
如果您在该文件中使用JSX或其他任何React,则警告将消失,就像zmii在他的回答中建议的那样。
但是我写这个答案是因为有人向我展示了他们的代码,而他们也面临着同样的问题。
他们的代码:
import React from 'react';
const person = () => {
return "<h2>I am a person!</h2>"
};
export default person;
以上代码中的问题是返回时,他使用了双引号。因此,它不是返回JSX,而是返回字符串,因此,他们收到了从未使用过React的错误。
结论:语法很重要,因此请记住,特别是如果您刚入门。
希望这对某人有帮助。
答案 3 :(得分:1)
ESlint需要配置为与React JSX一起使用。出色的article具有所有细节。