Вы делаете две ошибки:
1. Неправильный импорт компонента.
2. Неправильная визуализация компонента
Решение
- Компонент должен быть импортирован без фигурных скобок
- Реактивный компонент "игрок" должен начинаться с заглавных букв, т.е. он должен быть переименован в "Игрок"
Ниже приведен рабочий код, который я пробовал на моей локальной машине. Изменяет только App.js
import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
import Player from "./player"; // imported without curly braces and with capital first letter
class App extends Component {
render() {
return (
<div className="App">
<div>
<Player /> {/* Rendering the correct way */}
</div>
</div>
);
}
}
export default App;
Sidenote
В player.js
вы устанавливаете состояние неправильно, оно не будет работать, потому что:
setState
- это метод, а не объект
this
не связан с методом shoot
. Это выдаст ошибку что-то вроде «не могу прочитать это неопределенное» или что-то
Измените ваш player.js
следующим образом:
import React from "react";
import { Button } from "evergreen-ui";
export default class player extends React.Component {
constructor(...args) {
super(...args);
this.state = {
shoot: 0
};
}
shoot = ()=>{
this.setState({
shoot: Math.floor(Math.random() * Math.floor(3)),
});
}
render() {
return (
<div>
<h1>hello there</h1>
<h1>{this.state.shoot}</h1>
<Button onClick={() => this.shoot()}>Shoot another
value</Button>
</div>
);
}
}