В настоящее время я работаю над приложением типа «умный дом» и являюсь новичком, и я использую mobX
для задания имен активных комнат.
Я установил их в компоненте «Панель инструментов» для заголовка контейнера.Затем я хочу использовать переменную, хранящуюся внутри, чтобы отфильтровать комнаты в другом компоненте под названием «комната».Если я жестко закодирую имя комнаты, оно работает, но выдает кучу ошибок, когда я заменяю имя комнаты на фактическую переменную.
Я уже пытался объявить вещи в componentWillUnmount()
, но это не такТ работал до сих пор.
Здесь я устанавливаю переменную
handleClick(e){
this.props.roomStore.room = e.target.closest('.btn__toggle').querySelector('.btn__headline').innerHTML;
}
Здесь я хочу получить комнату
loadRooms(){
if(this.state.isLoaded){
var locations = this.state.things.filter( function (e){
return e.location == this.props.roomStore.room}); //<- this is the relevant variable
const habitems = locations.map((i, key) =>
<div className="btn__toggle" key={i.UID} type="submit">
<div className="btn__headline">{i.label}</div>
</div>
)
return habitems;
}
}
И здесь я рендерирую свои элементы:
render() {
if(this.state.isLoaded){
return (
<div>
<h1 id="h1">{this.props.roomStore.room}</h1>
<div className="btn__wrapper">{this.loadRooms()}</div>
</div>
);
}
Я предполагаю, что это может не сработать, потому что переменная устанавливается в другом компоненте до того, как вы на самом деле откроете нужный, который использует его при рендеринге, поэтому весь компонент визуализируется перед тем, как даже смонтирован.
Но я могу ошибаться в этом.Любая помощь приветствуется.Возникают следующие ошибки:
index.module.js: 860 Uncaught TypeError: Невозможно прочитать свойство 'props' из неопределенного
Указанная выше ошибка произошла в компоненте
Uncaught (в обещании) TypeError: Невозможно прочитать свойство 'props' из неопределенного
act-dom.development.js: 506 Предупреждение: Невозможно выполнить обновление состояния React для отключенного компонента.Это не работает, но это указывает на утечку памяти в вашем приложении.Чтобы исправить, отмените все подписки и асинхронные задачи в методе componentWillUnmount.