Я пытаюсь написать простую РПГ, чтобы узнать больше о том, как данные можно манипулировать в JS/React и ознакомиться с языком. В настоящее время у меня есть простая форма ввода ввода и изменение объекта. Объект называется person
, и я пытаюсь изменить его имя.Использование компонентов React для редактирования объектов и рендеринга этих изменений?
var person = {
name: ''
}
Вот компонент, который обрабатывает изменение объекта:
class ChangePersonProp extends React.Component {
constructor() {
super();
this.state = {value: ''};
this.handleSubmit = this.handleSubmit.bind(this);
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
this.setState({value: event.target.value});
}
handleSubmit() {
if (this.props.buttonTitle == 'Name') {
person.name = this.state.value;
}
}
render() {
return(
<form onSubmit={this.handleSubmit}>
<label>
{this.props.buttonTitle + ': '}
<input type="text" value={this.state.value} onChange={this.handleChange} />
</label>
<input type="submit" value="Submit"/>
</form>
);
}
}
Однако, я не могу показаться, чтобы показать эти изменения пользователя. Я подозреваю, что это связано с переоценкой компонента Root
при изменении формы и неправильном обновлении объекта. Я предполагаю, что это верно, потому что консоль не регистрирует изменение на render
.
class Root extends React.Component {
render() {
console.log(person.name)
if (player.name == '') {
return(
<div>
<ChangePlayerProp buttonTitle="Name" />
</div>
);
}else {
return(
<div>
<p>{person.name}</p>
</div>
);
}
}
}
Как бы я идти о структуризации моего Root
компонента, чтобы показать изменения в person
объекта?
Почему mobx ваш любимый? – staticCoffee