0
我是ReactJS的新手,並且無法渲染用於在單獨組件中顯示/隱藏模式的ModalTrigger。我使用的樣板是react-starter-kit。返回的錯誤是:「不變的違規:元素類型無效:期望一個字符串(對於內置組件)或類/函數(對於複合組件),但得到:undefined。檢查渲染方法MenuButton
。 「無法呈現react-bootstrap ModalTrigger
這似乎不大可能,一個應該返回之前的組件轉換爲字符串.....下面是代碼:
import React, {PropTypes, Component} from 'react';
import withStyles from 'isomorphic-style-loader/lib/withStyles';
import ModalTrigger from 'react-bootstrap';
import Menu from '../Menu';
import s from './MenuButton.css';
class MenuButton extends Component {
static getInitialState() {return {isMenuOpen: false}};
constructor() {
super();
this.state = {isMenuOpen: false};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
if(this.state) {
this.setState({isMenuOpen: !(this.state.isMenuOpen)});
}
}
render() {
var btnImage = require('./menuButton.svg');
var show = {show: this.state};
console.log('menu ' + <Menu/>);
return (
<ModalTrigger modal={<Menu />}>
<div className={s.menuBtn}>
<a onClick={this.handleClick.bind(this)}>
<img className={s.menuBtnImg} src={btnImage}/> {show} {this.state.isMenuOpen ? 'Stäng meny' : 'Meny'}
</a>
</div>
</ModalTrigger>
);
}
}
export default withStyles(s)(MenuButton);
然後模態:
import React, { Component } from 'react';
import withStyles from 'isomorphic-style-loader/lib/withStyles';
import s from './Menu.css';
class Menu extends Component {
static getInitialState() {return {show: false}};
static showModal(){
this.setState({show: true});
};
static hideModal() {
this.setState({show: false});
}
render() {
if (!this.state.show) {
return <span/>;
}
return (
<Modal {...this.props} title='Meny' animation={true}>
<div className='modal-body'>
<ul>
<a href="#main"><li>Startsida</li></a>
<a href="#omoss"><li>Om oss </li></a>
<a href="#reminiscens"><li>Reminiscens</li></a>
<a href="#appen"><li>Appen</li></a>
<a href="#stories"><li>Berättelser</li></a>
<a href="#nyheter"><li>Nyheter om projektet</li></a>
<a href="#englishinfo"><li>Info in English</li></a>
</ul>
</div>
</Modal>
);
}
}
export default withStyles(s)(Menu);
我不知道,ModalTrigger已被否決。謝謝!我相信這會解決我的問題! – HollowPlugh
很高興我能幫到你。如果我的答案解決了您的問題,請點擊大複選框將其作爲答案接受。 –