Я пытаюсь понять, как идут и уходят props
и state
. Я комментирую фрагменты кода, которые я понимаю, но есть некоторые другие, которые я не могу, потому что я не понял, что происходит.Что делает каждая часть этих компонентов React, как состояние и реквизит приходит и уходит?
Или здесь вы можете увидеть код, а также:
class TodoList extends React.Component {
// THIS IS THE PARENT COMPONENT
// WE DECLARE THE TYPE OF PROPS
static propTypes = {
todos: React.PropTypes.array
}
// INITIAL STATE OF THE COMPONENT
constructor(props) {
super(props)
this.state = { todos: this.props.todos || [] }
}
addTodo = (item) => {
// WE START MODIFYING THE STATE OF THE COMPONENT
this.setState({todos: this.state.todos.concat([item])});
}
render() {
return (
<div className="panel panel-default TodoList">
<h3>TODO List</h3>
<TodoItems items={this.state.todos}/>
<TodoInput addTodo={this.addTodo}/>
</div>
);
}
};
class TodoItems extends React.Component {
static propTypes = {
items: React.PropTypes.array.isRequired
}
constructor(props) {
super(props);
}
render() {
let createItem;
createItem = (item, index) => {
return (
<li key={index} className="list-group-item">{item}</li>
);
};
return (
<ul className="TodoItems list-group">
{this.props.items.map(createItem)}
</ul>
);
}
};
class TodoInput extends React.Component {
constructor (props) {
super(props);
this.state = {item: ''};
}
onChange = (e) => {
this.setState({item: e.target.value});
}
handleSubmit = (e) => {
e.preventDefault();
this.props.addTodo(this.state.item);
this.setState({item: ''});
}
render() {
return (
<form onSubmit={this.handleSubmit} className="TodoInput">
<div className="input-group">
<input type="text"
className="form-control"
placeholder="Search for..."
onChange={this.onChange} value={this.state.item}/>
<span className="input-group-btn">
<input className="btn btn-default"
type="submit" value="Add" />
</span>
</div>
</form>
);
}
};
React.render(<TodoList todos={['red','blue']}/>, document.getElementById('container'));
Как вы объяснить, что это onChange
функция делает на TodoItems
компонента.
Или как объяснить куски кода, как это:
<TodoItems items={this.state.todos}/>
<TodoInput addTodo={this.addTodo}/>
почему this.state.todos
установка props
там и почему имя addTodo={}
там с this.addTodo
?
Имеет смысл начать с начала https://facebook.github.io/react/ – zerkms
Это, вероятно, более полезный ресурс. Помогло мне много https://facebook.github.io/react/docs/thinking-in-react.html –