私は本当にリアクション機能の基本的なビットをまとめて誰かを見せてくれました。私のコンソールタブは私に状態を直接変えていると非難しています。 this.setState()
を使っている限り、基本的にはうまくいくと思いました。これは実際に状態を突然変異させていますか?
この小さなコードは、状態に格納されたperson
オブジェクトの最初の人物を吐き出し、ボタンをクリックすると年齢を増やします(これは実際にはすべて機能します)。
これを行うことで実際に状態を直接変えていますか?そして私がいれば、これを行う正しい方法は何ですか? setState
として
import React, { Component } from 'react';
import './App.css';
import Person from './Person/Person';
class App extends Component {
state = {
persons: [
{ name: 'Max', age: 28 },
{ name: 'Stephanie', age: 26 },
{ name: 'Manu', age: 29 },
],
}
increaseAgeHandler =() => {
this.setState({
persons: [
{ name: 'Max', age: this.state.persons[0].age += 1 },
{ name: 'Stephanie', age: 26 },
{ name: 'Manu', age: 29 },
],
});
}
render() {
return (
<div className="App">
<h1>This is an app</h1>
<button onClick={this.increaseAgeHandler}>Add to age</button>
<Person name={this.state.persons[0].name} age={this.state.persons[0].age} />
</div>
);
}
}
export default App;
あなたの州がコンストラクタの外にある理由はありますか? –
@LucasOliveira多分bcosにコンストラクタはありませんか? – Dane