我可以使用每個容器中的條件顯示裝載程序圖標,但是當使用高級組件時,我無法顯示它。我已經在下面發佈了我的代碼。我使用了immutable.js,redux-saga。下面是一個不工作顯示裝載程序使用高級組件
const mapStateToProps = createStructuredSelector({
logs: selectLogs(),
logState: selectAllLogState(), #has requesting flag in it
dialog: selectDialog()
});
class Logs extends React.PureComponent {}
export default connect(mapStateToProps, mapDispatchToProps)(
Loader("requesting")(Logs)
);
export const selectAllLogState =() => state => state.get("logs");
export const selectLogs =() => state => state.getIn(["logs", "logs"]);
const Loader = prop => WrappedComponent => {
return class Loader extends React.Component {
render() {
return this.props[prop]
? <div className="earth-spinning">
<img
src={EarthSpinning}
alt="spinner"
style={{ margin: "0 auto" }}
/>
</div>
: <WrappedComponent {...this.props} />;
}
};
};
export default Loader;
const initialState = fromJS({
requesting: false,
deleted: false,
response: {},
logs: {},
error: null
});
function showLogs(state = initialState, action) {
switch (action.type) {
case LOGS_FETCH_REQUEST:
return state.set("requesting", true);
case LOGS_FETCH_SUCCESS:
return state
.set("requesting", false)
.set("logs", fromJS(action.logs.data.dataList, idReviver));
case LOGS_FETCH_FAILURE:
return state.set("error", action.error).set("requesting", false);
default:
return state;
}
}
export default showLogs;
這裏是一個有日誌,減速機的完整代碼的依據,選擇器和加載器https://gist.github.com/MilanRgm/59ea4169db18378cb0fd64aafff8c77e – Serenity
據我所見,你的'requested'道具在'this.props'的'logs'鍵裏面 – vrael560
如何將請求標誌發送到Loader HOC,以使加載程序也可以被其他組件使用,而不僅僅是日誌組件? – Serenity