我有以下组件,该组件是从模板获得的:
import React, { Component } from 'react';
import { Popover } from 'antd';
import { connect } from 'react-redux';
import IntlMessages from '../../components/utility/intlMessages';
import TopbarDropdownWrapper from './topbarDropdown.style';
const demoNotifications = [
{
id: 1,
name: 'David Doe',
notification:
'A National Book Award Finalist An Edgar Award Finalist A California Book Award Gold Medal Winner'
},
{
id: 2,
name: 'Navis Doe',
notification:
'A National Book Award Finalist An Edgar Award Finalist A California Book Award Gold Medal Winner'
},
{
id: 3,
name: 'Emanual Doe',
notification:
'A National Book Award Finalist An Edgar Award Finalist A California Book Award Gold Medal Winner'
},
{
id: 4,
name: 'Dowain Doe',
notification:
'A National Book Award Finalist An Edgar Award Finalist A California Book Award Gold Medal Winner'
}
];
class TopbarNotification extends Component {
constructor(props) {
super(props);
this.handleVisibleChange = this.handleVisibleChange.bind(this);
this.hide = this.hide.bind(this);
this.state = {
visible: false
};
}
hide() {
this.setState({ visible: false });
}
handleVisibleChange() {
this.setState({ visible: !this.state.visible });
}
render() {
const { customizedTheme } = this.props;
const content = (
<TopbarDropdownWrapper className="topbarNotification">
<div className="isoDropdownHeader">
<h3>
<IntlMessages id="sidebar.notification" />
</h3>
</div>
<div className="isoDropdownBody">
{demoNotifications.map(notification => (
<a className="isoDropdownListItem" key={notification.id}>
<h5>{notification.name}</h5>
<p>{notification.notification}</p>
</a>
))}
</div>
<a className="isoViewAllBtn">
<IntlMessages id="topbar.viewAll" />
</a>
</TopbarDropdownWrapper>
);
return (
<Popover
content={content}
trigger="click"
visible={this.state.visible}
onVisibleChange={this.handleVisibleChange}
placement="bottomLeft"
>
<div className="isoIconWrapper">
<i
className="ion-android-notifications"
style={{ color: customizedTheme.textColor }}
/>
<span>{demoNotifications.length}</span>
</div>
</Popover>
);
}
}
export default connect(state => ({
...state.App.toJS(),
customizedTheme: state.ThemeSwitcher.toJS().topbarTheme
}))(TopbarNotification);
然后我尝试从另一个组件中使用该组件:
import React, { Component } from "react";
import { connect } from "react-redux";import { Layout } from "antd";
import appActions from "../../redux/app/actions";
import TopbarUser from "./topbarUser";
import TopbarWrapper from "./topbar.style";
import themes from "../../settings/themes";
import { themeConfig } from "../../settings";
import ActiveTenant from "./activetenant";
import TopBarNotification from "./topbarNotification";
const { Header } = Layout;
const { toggleCollapsed } = appActions;
const customizedTheme = themes[themeConfig.theme];
class Topbar extends Component {
render() {
const { toggleCollapsed } = this.props;
const collapsed = this.props.collapsed && !this.props.openDrawer;
const styling = {
background: customizedTheme.backgroundColor,
position: "fixed",
width: "100%",
height: 70
};
return (
<TopbarWrapper>
<Header
style={styling}
className={
collapsed ? "isomorphicTopbar collapsed" : "isomorphicTopbar"
}
>
<div className="isoLeft">
<button
className={
collapsed ? "triggerBtn menuCollapsed" : "triggerBtn menuOpen"
}
style={{ color: customizedTheme.textColor }}
onClick={toggleCollapsed}
/>
</div>
<ul className="isoRight">
<li>
<ActiveTenant />
<TopBarNotification />
</li>
<li
onClick={() => this.setState({ selectedItem: "user" })}
className="isoUser"
>
<TopbarUser />
<div>{ process.env.uiversion}</div>
</li>
</ul>
</Header>
</TopbarWrapper>
);
}
}
export default connect(
state => ({
...state.App.toJS()
}),
{ toggleCollapsed }
)(Topbar);
但我收到此错误:
TypeError:无法读取未定义的属性“ toJS” Function.mapToProps src / containers / Topbar / topbarNotification.js:93
90 | 91 |导出默认的connect(state =>({92 |
... state.App.toJS(),93 | customizedTheme:state.ThemeSwitcher.toJS()。topbarTheme 94 | }))(TopbarNotification); 95 | 96 |
有什么主意吗?