Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2017, 12:53
Новичок на форуме
Отправить личное сообщение для Logger Посмотреть профиль Найти все сообщения от Logger
 
Регистрация: 13.04.2017
Сообщений: 5

React / вызов метода другого компонента
Добрый день.

Для учебных целей использую react -> material ui
Возникла проблема связывания двух компонентов, а именно мне нужно по нажатию на кнопку одного компонента вызвать метод другого компонента.
В бэкэнде обычно для этого используется создание экземпляра класса и обращение к методу экземпляра. В реакте же есть некое монтирование и объяснение межкомпонентного взаимодействия кажется мне несколько путанным.

import Menu from './Menu.js';

class TopAppBar extends Component {
render() {
        return (
            <MuiThemeProvider muiTheme={muiTheme}>
            <div>
                <AppBar
                    title="Title"
                    iconElementRight={this.state.logged ? <Logged /> : <Login />}
                    onLeftIconButtonTouchTap={здесьВызватьМетодИмпортируемогоКлассаMenu}
                />
            </div>
            </MuiThemeProvider>
        );
    }
}


Подскажите, пожалуйста, как вызвать метод импортированного класса (11 строка кода)
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2017, 14:50
Новичок на форуме
Отправить личное сообщение для Logger Посмотреть профиль Найти все сообщения от Logger
 
Регистрация: 13.04.2017
Сообщений: 5

Нагуглил немного.
Поскольку вызываемый метод изменяет состояние компонента, можно прибегнуть к
updateData(config) {
  this.setState(config);
}

и
render() {
  return (<div update={this.updateData.bind(this)}></div>)
}

Первое прописываем в нашем основном компоненте, а последнее, как я понял, нужно прописывать в вызываемом компоненте.
Остается только вопрос что передавать в updateData. Пробую передать нужное свойство
onLeftIconButtonTouchTap={this.updateData({open: true})}

Валит ошибками
setState(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.

На SO вроде есть решение последней проблемы, буду пробовать, но интересно, что событие
onLeftIconButtonTouchTap
отрабатывает без клика/тапа огромное количество раз пока не вывалится
Maximum call stack size exceeded
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2017, 09:22
Новичок на форуме
Отправить личное сообщение для Logger Посмотреть профиль Найти все сообщения от Logger
 
Регистрация: 13.04.2017
Сообщений: 5

Проблема решилась установкой Vue.js
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции, находящий внутри метода pro_xaoc Библиотеки/Тулкиты/Фреймворки 4 01.03.2014 09:27
вызов ф-ции обработчика как метода объекта FanAizu Общие вопросы Javascript 5 23.08.2013 15:52
Вызов метода внутри метода при инициализации плагина SergXP jQuery 0 01.07.2013 22:27
Вызов метода из метода qwermjk Общие вопросы Javascript 25 16.10.2012 12:38
Наследование класса-замыкания и вызов метода предка BobiKK Общие вопросы Javascript 2 21.03.2010 13:26