Я новичок в ReactJS. Все еще оборачиваюсь вокруг всех слоев с помощью магазина редуксов, саг и т. Д.
Я пытаюсь вернуть простое логическое значение из саги (которая в данный момент возвращается правильно) в реагирующий компонент.
Вот что у меня есть:
На компоненте контейнера у меня есть это:
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));
}
}
Я получаю следующую ошибку и не совсем понимаю, почему :-(
Тип «Действие» нельзя назначить типу «логический».
Любая помощь будет оценена.
UPDATE
Хорошо, после ввода мне удалось приблизиться на 1 шаг, но пока нет.
Я добавил это в редуктор для управления состоянием
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);
}