Uncaught TypeError: Невозможно прочитать свойство 'состояние' из неопределенного
Я пытаюсь перейти от React.createClass к React.Component, но я получаю ошибку ниже.
Uncaught TypeError: Cannot read property 'state' of undefined
Я погуглил на ошибку, но не смог понять это
class Accordion extends React.Component {
3 ответа
Вы должны связать this
,
this.onSelect -> this.onSelect.bind(this)
this.enhanceSection -> this.enhanceSection.bind(this)
Вы должны связать this.onSelect
Если вы забудете связать this.onSelect и передать его onClick, это будет неопределенным при вызове функции.
Попробуй это:
class SectionAccordion extends React.Component {
constructor(props){
super(props);
this.onSelect = this.onSelect.bind(this);
}
onSelect() {
this.props._onSelect(this.props.id);
}
render() {
console.log("accordion / the Accordion Section component");
var className = 'accordion-section' + (this.props._selected ? ' selected' : '');
return (
<div className={className}>
<h3 onClick={this.onSelect}>
{this.props.title}
</h3>
<div className="up-arrow"></div>
<div onClick={this.onSelect} className="body">
{this.props.children}
</div>
</div>
);
}
}
Обновить:
Вы можете связать контекст, используя arrow function
также; как это:
onSelect = () => {
// code goes here
}
Вы должны связать свой onSelect
к классу в конструкторе:
constructor(props) {
super(props);
this.state = {
selected: props.selected // use props, not this.props
};
this.onSelect = this.onSelect.bind(this);
}
extends
синтаксис больше не имеет автосвязывания, как createClass
сделал.