Я пытаюсь передать selectNotebook
в notebookNav
, который будет использоваться в функции onClick()
. Я вижу selectNotebook
в моей подсказке в инструментах React dev, но всякий раз, когда я нажимаю кнопку, я получаю ошибку Uncaught TypeError: Cannot read property 'selectNotebook' of undefined(…)
.Реагентная функция, переданная ребенку через опоры, не определена
Это мой родительский компонент:
var App = React.createClass({
getInitialState: function() {
return {
notebooks: this.props.notebooks,
nav: this.props.nav
};
},
selectNotebook: function(id) {
const nav = {...this.state.nav};
nav[notebook] = this.props.notebooks[id];
this.setState({nav})
},
render: function() {
return (
<div style={{"height": "100%"}}>
<NotebookNav
notebooks={this.props.notebooks}
selectNotebook={this.selectNotebook}
>
</NotebookNav>
<Technique></Technique>
</div>
);
}
});
Это ребенок компонент:
var NotebookNav = React.createClass({
render: function() {
notebooks = this.props.notebooks;
return (
<div className="col-md-4">
<div className="panel panel-info">
<div className="panel-heading">
<h4 className="panel-title">Your Notebooks</h4>
</div>
<div className="panel-body">
<ul className="breadcrumb"
style={{"backgroundColor": "#fff", "marginBottom": "0"}}
>
<li className="active">
notebooks
</li>
</ul>
<ul className="nav nav-pills nav-stacked">
<div className="btn-group-vertical" style={{"width": "100%"}}>
{notebooks.map(function (notebook) {
return(
<li
key={notebook.id}
className="btn btn-block btn-raised btn-lg"
onClick={() => this.props.selectNotebook(notebook.id)}
>
{notebook.name}
</li>
);
})}
</div>
</ul>
</div>
</div>
</div>
);
}
});
Спасибо за предложение, но при использовании 'createClass' вместо ES6' расширяет React.component', 'this' обязан автоматически. Если вы предлагаете цену, как вы предлагаете при использовании 'createClass', она будет выдавать вам ошибку. –