我创建一个播放器库,并希望做出反应流向是这样的:阵营高阶组件初始道具
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
方法。
我该怎么做?
好主意,但两种方法都返回undefined。另外'WrappedComponent()'抛出一个错误。所以我不认为我可以这样做。 –
我也试过'componentDidMount' –
我刚刚意识到'WrappedComponent'是对类的引用,而不是它的一个实例,因为它依赖于原型继承,所以方法应该在'prototype'上可用。尝试新的代码 –