Как установить состояние компонента React и реквизиты из браузера

Есть ли возможность получить доступ и установить состояние и свойства существующего компонента React через браузер (из другого скрипта или через консоль)?

Я знаю, что с Angular есть способ получить доступ к области видимости и изменить переменные, но с React я не смог найти способ.

Я бы предположил, что должен быть какой-то путь, потому что расширение React Developer Tools от Facebook способно получать всю информацию (Props, State, Component, Event Listeners) от компонентов React на странице с возможностью их изменения.

Если есть возможность сделать это с помощью JavaScript, какой способ это сделать?

2 ответа

Если у вас есть расширение React devtools, вы можете получить доступ к области действия React через консоль браузера с помощью $r,

Сначала выберите компонент, с которым вы хотите работать, на вкладке React devtools:

Затем используйте $r действовать на компонент, например, читать состояние с $r.state или установить состояние с $r.setState({ ... }):

Чтобы установить состояние реагирующих компонентов из браузера, вы можете привязать функцию к объекту окна, которая будет запускать заданное состояние.

В конструкторе реагирующего компонента вы можете сделать это.

constructor (props){
    super(props);
    window.changeComponentState = (stateObject) => {
        this.setState ({stateObject});
    }
}

В консоли браузера вы можете сделать это.

window.changeComponentState ({a:'a'});

ВНИМАНИЕ: Это анти-шаблон. Это будет работать, но вы никогда не должны этого делать.

Чтобы установить состояние из браузера, вставьте его где-нибудь в свой компонент, как в render():

  globalSetState = function(state){this.setState(state)}.bind(this);

Примечание: важно оставить var, поскольку это делает определенную функцию доступной в глобальном масштабе.

Теперь вы можете позвонить globalSetState({x: 'y'}) в вашей консоли.

Предупреждение: это безумно безобразно, и, как console.log() для отладки, должны быть удалены в вашем живом приложении.

Другие вопросы по тегам