@weredy

Как метод может быть доступен внутри объекта через this, но не быть доступным извне по имени?

У React есть метод setState() который можно использовать внутри объекта, который передаешь для создания экземпляра:
var MyComponent = React.createClass({
            getInitialState: function() {
                return {
                    myState: 1
                };
            },

            myMethod: function() {
              this.setState({
                    myState: 1
                })
            },

            render: function() {
                return (
                    <h1>Тест</h1>
                );
            }
        });


Но при вызове MyComponent.setState извне: Uncaught TypeError: MyComponent.setState is not a function(…)

К сожалению мой уровень не позволяет понять что происходит по коду React, я просто пытаюсь разобраться в самом JS, каким образом организую подобные вещи.
  • Вопрос задан
  • 249 просмотров
Решения вопроса 1
@Aves
MyComponent это функция-конструктор, setState в прототипе. Нужно создать инстанс компонента.
var instance = ReactDOM.render(<MyComponent />. document.body);
instance.setState({myState: 1});

(new MyComponent()).setState() тоже по идее будет работать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
idtimeless
@idtimeless
Front-end Developer
я не совсем понимаю - зачем вам setState снаружи?
если вы хотите просто передать параметры - передайте их в таком виде
ReactDOM.render(<MyComponent myState='1' /> , document.body);
.... 
render: function() {
                return (
                    <h1>Тест { this.props.myState}</h1>
                );
            }
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы