class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
generations: 0,
rows: 30,
cols: 30,
isGoing: false,
speed: 500,
gameField: []
}
this.generateGameField()
}
generateGameField() {
var result = [];
for (let i = 0; i < this.state.rows; i++) {
result[i] = [];
for (let j = 0; j < this.state.cols; j++) {
result[i][j] = Math.round(Math.random());
}
}
console.log(result)
this.setState({ gameField: result })
}
render() {
return (
<button onClick={() => console.log(this.state)}>Click me</button>
)
}
}
ReactDOM.render(
<Main />,
document.body
)
도와주세요. 함수 generateGameField 새 배열을 만들고 0 또는 1 채 웁니다. 실제로 배열을 만들지 만 상태를 변경하지 않습니다. 함수 내에서 상태에 액세스 할 수 있으므로 무엇이 잘못되었는지 알 수 없습니다.React ES6 클래스의 기능이 상태를 변경하지 않습니다
당신이 생성자에서 상태를 설정하는 거라면, 왜 그냥 같은 초기 상태에 넣어? 'generateGameField'와'this.state = {...} '에서'result'를 반환합니다.'gameField : this.generateGameField()'. – Li357
고맙습니다. 나는 이것을 알고 있었지만, 왜 내 코드가 어떻게되는지를 알고 싶다. 내 기능이 주에 대한 액세스 권한을 가지지 만 변경할 수없는 이유는 무엇입니까? –
예, setState는 비동기입니다. 그러나 버튼을 클릭 한 후 내 상태를 인쇄해야하는 버튼을 추가했습니다. 그리고 국가는 전혀 변하지 않을 것입니다. 5, 10, 15 초 후에 버튼을 클릭 할 수 있으며 상태는 그대로 유지됩니다. –