私はこれを動作させるのに近いです。誰かがこれを手伝ってくれることを願っています。異なる反応ファイルから関数を呼び出す
私は2つの反応ファイルを持っています。 1つはContainer
であり、もう1つはNav
コンポーネントです。
_template.js
と呼ばれるコンテナコンポーネント内に、モーダルnpmパッケージをインポートしています。 Nav
コンポーネント内でアクセスしようとしているこのコンテナファイル内にshowModal
関数を作成しました。
これは私がこれまで持っていると、このエラーにUncaught TypeError: Cannot read property 'modal' of undefined
_template.js受け取るものです:
import React from 'react';
import { Link } from 'react-router';
import { prefixLink } from 'gatsby-helpers';
import { config } from 'config';
import Headroom from 'react-headroom';
import Nav from './nav.js';
import '../css/main.scss';
import Modal from 'boron/DropModal';
const modalStyle = {
minHeight: '500px',
backgroundColor: '#303841'
};
const backdropStyle = {
backgroundColor: '#F6C90E'
};
const contentStyle = {
backgroundColor: '#303841',
padding: '3rem'
};
export default class RootTemplate extends React.Component {
static propTypes = {
location: React.PropTypes.object.isRequired,
children: React.PropTypes.object.isRequired,
}
static contextTypes = {
router: React.PropTypes.object.isRequired,
}
constructor() {
super();
}
showModal() {
this.refs.modal.show();
}
render() {
return (
<div>
<Headroom>
<Nav showModal={this.showModal}/>
</Headroom>
<Modal ref="modal" modalStyle={modalStyle} contentStyle={contentStyle} backdropStyle={backdropStyle}>
<form>
<label>Name:</label>
<input type="text"/>
<label>Email:</label>
<input type="email"/>
<label>Message:</label>
<input type="text-area"/>
<input type="submit" placeholder="Submit" />
</form>
</Modal>
{this.props.children}
</div>
);
}
}
そして、私のNav.jsファイル:
import React from 'react';
import { Link } from 'react-router';
import { prefixLink } from 'gatsby-helpers';
import { Nav, NavGroup, NavItem, NavToggle, Icon } from 're-bulma';
export default class nav extends React.Component {
static propTypes = {
name: React.PropTypes.string,
};
constructor(props) {
super(props);
}
render() {
return (
<div>
<Nav>
<NavGroup align="left">
<NavItem>
<Link to={prefixLink('/')}>
<h2>Dillon Raphael</h2>
</Link>
</NavItem>
</NavGroup>
<NavToggle />
<NavGroup align="right" isMenu>
<NavItem>
</NavItem>
<NavItem>
</NavItem>
<NavItem>
<a href="#" onClick={::this.props.showModal}>Let's Work!</a>
</NavItem>
</NavGroup>
</Nav>
</div>
);
}
}
お知らせ<a href="#" onClick={::this.props.showModal}>Let's Work!</a>
これはをここで私が_template.js
ファイルから渡したshowModal関数を呼び出そうとしています。
'ref'が存在していないが、なぜ渡しますとにかく 'Modal'への' ref'? 'Modal'は' show'の 'prop'を取っています。なぜ、別の解決策を考え出すのではなく、なぜそれを使用しないのですか? – lux
@lux文書でrefを使うと言います。 https://github.com/yuanyan/boron。あなたは代わりにthis.modal.show()をするだけでいいですか? – Dileet
申し訳ありませんが、これはかなり一般的な '反応ブートストラップ'モーダルだと思いました。 'ホウ素 'からこれを見たことがない – lux