Я использую Grommet и пытаюсь получить Layer (в значительной степени модальный) для работы при нажатии кнопки. Я знаю, что мой onClick работает, потому что я попробовал простой console.log, и он работает. MyModal также может отображаться, если я использую ReactDOM и выношу его. Я думаю, что моя проблема имеет какое-то отношение к тому, как я называю это или возвращаю его? Я хочу, чтобы модальная информация отображалась при нажатии кнопки.Реакция на вызов другого компонента
MyModal.js
import React, { Component } from 'react';
import Layer from 'grommet/components/Layer';
import Header from 'grommet/components/Header';
import Heading from 'grommet/components/Heading';
import Section from 'grommet/components/Section';
import Paragraph from 'grommet/components/Paragraph';
export default class MyModal extends Component {
render() {
return (
<Layer closer={true} align="top">
<Header>
<Heading tag="h2">
Title
</Heading>
</Header>
<Section>
<Paragraph>
This is a simple dialog.
</Paragraph>
</Section>
</Layer>
);
}
};
Main.js
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import App from 'grommet/components/App';
import Button from 'grommet/components/Button';
import MyModal from './components/MyModal';
export default class Main extends Component {
getComponent(event) {
return <MyModal/>;
}
render() {
return (
<App centered={false}>
<Button onClick={this.getComponent.bind(this)} label="Action" />
</App>
);
}
};
Да это должно работать. Не могли бы вы избежать связывания 'getComponent', поскольку его выполнение всегда связано с закрытием класса? –
Функции связаны _when_ они вызываются и _not_ определены. Однако в этом случае его привязка не нужна, поскольку ее область не теряется во встроенном обратном вызове или методе, который создает собственный контекст 'this'. Я внесла свой ответ, чтобы включить ваше предложение, потому что оно отвлекает иначе. Спасибо за улов :) – Pineda
Спасибо: +1: Это была моя цель: «это отвлекает иначе». Я вижу много новых разработчиков React.js, излишне связывающих все их методы класса. Мы не хотим сообщать неправильную идею. –