【发布时间】:2016-11-16 17:20:06
【问题描述】:
我正在创建一个播放器库,并希望 React 流程如下所示:
PlayerHOC -> PlaylistHOC -> FooterContainer。
我希望它朝这个方向发展的原因是 PlayerHOC 具有 PlaylistHOC 和 FooterContainer 需要访问的方法(即从道具)。
我的代码:
class FooterContainer extends React.Component {
render() {
return (
<div>
<div className="jp-type-footer" >
//...
</div>
</div>
);
}
}
class FooterPlayer extends React.Component {
constructor() {
super();
this.options = {
smoothPlayBar: false,
muted: true,
//...
};
}
render() {
return (
<Player {...this.options} />
);
}
};
export const PlaylistHOC = (WrappedComponent) => class extends React.Component {
constructor(props) {
super(props);
//Add a new stateClass for the extra loop option
this.stateClass = merge({
shuffled: "state-shuffled",
loopedPlaylist: "state-loop-playlist"
}, this.props.stateClass);
}
setPlaylist = () => {}
};
export const PlayerHOC = (WrappedComponent) => class extends React.Component {
constructor(props) {
super(props);
//get passed in props from FooterPlayer and PlaylistHoc
}
play = () => {}
pause = () => {}
};
const Player = PlayerHOC(PlaylistHOC(FooterContainer));
export default connect()(FooterPlayer);
我还将道具从FooterPlayer 传递到PlayerHOC,效果很好。但是,我还想将永远不会更新的默认道具从 PlaylistHOC 传递到 PlayerHOC,我不知道如何在保持这种流动的同时做到这一点。
例如:const Player = PlaylistHOC(PlayerHOC(FooterContainer)); 这将允许我将初始道具从PlaylistHOC 和FooterPlayer 传递给PlayerHOC,但是我将无法通过道具访问PlayerHOC 方法。
我该怎么做?
【问题讨论】:
标签: javascript reactjs