【发布时间】:2019-04-26 12:20:28
【问题描述】:
我是 ReactJS 的新手。仍然用 redux-store 和 sagas 等将我的头包裹在所有层上。 我正在尝试将一个简单的布尔值从 saga(此时 saga 正确返回)返回到 react 组件。
这是我所拥有的:
在容器组件上我有这个:
export interface IKpaPickerConnectedDispatch {
lookupListDialogToggle?: (dialogProps: ILookupListDialog) => void;
requestSaveProfileFieldItem?: (profieFieldItem: IProfileFieldItem) => void;
// setKpiPercentageShow?: (value: boolean) => void;
updateKpaKpiProfilePercentage?: (toggle: boolean, jobId: number) => void;
getKpaKpiProfilePercentageToggle?: (jobId: number) => void;
}
function mapStateToProps(state: IGlobalApplicationState, ownProps: IKpaPickerProps): IKpaPickerConnectedState {
return {
kpiPercentageShow: actions.requestKpaKpiToggle(state.jobProfileState.jobProfile!.id)
};
}
在传奇方面,我有这个:
function* requestKpaKpiToggle(action: IKpaKpiToggleReceive)
{
try {
const jobId = action.payload!;
const REQUEST_URL = `${REMPROFILE_API_URL}/KpaKpi/GetKpaKpiJobProfilePercentageToggle/${jobId}`;
const response = yield fetch(REQUEST_URL, secureHeader('GET'));
const json = yield response.json();
// new method to return value and update state
yield put(requestKpaKpiToggleReceived(json));
}
catch (e) {
yield put(logError(e));
}
}
我收到以下错误,但不太明白为什么:-( 类型“操作”不可分配给类型“布尔”。
任何帮助将不胜感激。
更新
好的,输入后我已经设法靠近了 1 步,但还没有。
我在reducer中添加了这个用于状态管理
case ActionKeys.KPA_KPI_TOGGLE_RECEIVE: {
global.console.log('KPA_KPI_TOGGLE_RECEIVE', action.payload);
return state.set('isKpiPercentageShown', action.payload)
.set('kpiPercentageReceived', true) as JobProfileState;
}
现在的问题是它没有更新
componentDidMount()
{
if(this.props.getKpaKpiProfilePercentageToggle && !this.state.kpiPercentageReceived)
this.props.getKpaKpiProfilePercentageToggle(this.props.jobId);
}
【问题讨论】:
标签: reactjs react-redux redux-saga