Я пытаюсь React.js в первый раз при попытке создать это веб-приложение. Я получаю Cannot read property 'setState' of null
по указанной строке ниже. Я пытался понять, почему последние несколько часов и, похоже, не может понять это. Любая помощь будет принята с благодарностью.Невозможно прочитать свойство 'setState' of null - React.js, Modal, Bootstrap
MyModal.jsx
import React from 'react';
import { Modal, Button, ButtonToolbar } from 'react-bootstrap';
export default class MyModal extends React.Component {
constructor(props) {
super(props);
this.state = {show: false};
}
showModal() {
this.setState({show: true});
}
hideModal() {
this.setState({show: false});
}
render() {
return (
<ButtonToolbar>
<Button bsStyle="primary" onClick={this.showModal}>
Launch demo modal
</Button>
<Modal
{...this.props}
show={this.state.show}
onHide={this.hideModal}
dialogClassName="custom-modal"
>
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-lg">Modal heading</Modal.Title>
</Modal.Header>
<Modal.Body>
<h4>Wrapped Text</h4>
<p>Blah</p>
</Modal.Body>
<Modal.Footer>
<Button onClick={this.hideModal}>Close</Button>
</Modal.Footer> // Chrome inspector says it errors on this line
</Modal>
</ButtonToolbar>
);
} // end render function
} // end export default
О, хорошо! Я также опубликовал решение, но мне понравилось ваше, поэтому я удалю свое. – noblerare
Мы не хотим '.bind' создавать новую функцию для каждого рендеринга :) –
Это полностью устраняло мою проблему, но разумный вопрос - почему этот шаблон необходим в первую очередь и почему нет возможности автоматизировать этот с меньшим количеством кода, написанным от руки, вместо этого я бы хотел, чтобы это было сделано для меня, поэтому я не могу его испортить и не оставляю. Настоящее разочарование. Возможный ответ: это потому, что * constructor() * находится в «статическом» классе моего компонента, а не в методе экземпляра. Crappy «наказать программиста» API. –