xoma2
@xoma2
Программист

Почему state == null. Пишет в бразуере ошибку?

До того как попытался отрефакторить этот код под ES6 все работало нормально.
После же, ошибка в браузере

Cannot read property 'active' of null
this.state === null

Где я мог допустить ошибку.

'use strict';
var React = require('react'),
    classNames = require('classnames'),
    superAgent = require('superagent');

class P extends React.Component{
    constructor(props) {
        super(props);
        console.log(props);
        //this.state = { value: props.initialValue };
    }
    getInitialState() {
        return {
            active: false
        };
    }
    active() {
        this.setState({
            active: !this.state.active
        });
    }
    gotoUrl(){
        superAgent.post('http://storage.com/api/get_profile').withCredentials().end(function(resp){
            window.location = '//was.io/' + resp.id + '/Plus-App/';
        });
    }
    render(){
        var className = classNames('new panel', {active: this.state.active});
        return (
            <li className={className}>
                <a onClick={this.gotoUrl} style={{width: '100%'}} className="collapsed">
                    <span className="glyphicon glyphicon-plus"></span>
                </a>
            </li>
        );
    }
}

P.propTypes = {
    data: React.PropTypes.object.isRequired
};

module.exports = P;
  • Вопрос задан
  • 246 просмотров
Пригласить эксперта
Ответы на вопрос 1
@GeraldIstar
Frontend
Могу ошибаться, но для классов state вроде бы должен задаваться в конструкторе, а в Вас там закомментировано. Ну и плюс пробрасывать props в state это вроде как анти-паттерн.
Статья, по которой я писал код в es6:
www.newmediacampaigns.com/blog/refactoring-react-c...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы