Есть компонента с формой. Инпут я вынес в отдельную компоненту и подставляю. Код основной компоненты:
class Calendar extends React.Component {
constructor() {
super();
this.state = {
id: '',
title: '',
date: ''
};
this.handleChange.bind(this);
this.createEvent.bind(this)
}
handleChange(event) {
var state = this.state;
state[event.target.name] = event.target.value
this.setState(state);
}
render() {
console.log(this.state);
return (
<div className="container">
<div className="col-md-12 col-xs-12 calendar-wrapper">
<EventList/>
<Input name="id"
value={this.state.id}
onChange={this.handleChange}
/>
<Input name="title"
value={this.state.title}
onChange={this.handleChange}
/>
<Input name="date"
value={this.state.date}
onChange={this.handleChange}
/>
<button className="btn btn-info text-center"
onClick={this.createEvent}
>
SAVE
</button>
</div>
</div>
);
}
}
код компоненты Input:
export default class Input extends React.Component {
constructor(props) {
super(props);
this.onChange.bind(this);
}
onChange(event) {
this.props.onChange(event);
}
render() {
return (
<div className="form-group">
<label>{this.props.name ? this.props.name : ''}</label>
<input type="text"
className="form-control"
name={this.props.name}
value={this.props.value}
onChange={this.onChange}
/>
</div>
);
}
}
Все отрисовывается, когда начинаю вводить что-то в инпуты, текст вводится.но вылезает ошибка:
Uncaught TypeError: Cannot read property 'props' of undefined
В чем ошибка?вроде пробросил метод правильно..
bindи другие способы сохранения контекста вызова – Grundy Jun 08 '17 at 08:57