Я пытаюсь использовать API-интерфейс stackoverflow, чтобы сделать мой первый проект реагировать на избыточность.Мне нужно поддерживать состояние, подобное следующему:
{
selectedTag: reactjs,
selectedSortOrder: activity,
items:[]
}
Мой редуктор указан ниже:
const initialState = {
selectedTag: 'C#',
selectedSortOrder: 'activity', items: []
}
function SelectTag(state = initialState, action) {
switch (action.type) {
case SELECTTAG:
// console.log(state);
return Object.assign({}, state, { selectedTag: action.selectedTag });
default:
return state;
}
}
function SelectSortOrder(state = initialState, action) {
switch (action.type) {
case SELECTSORTORDER:
//console.log(state);
return Object.assign({}, state, { selectedSortOrder: action.selectedSortOrder });
default:
return state;
}
}
function ReceivePosts(state = { items: [] }, action) {
switch
(action.type) {
case RECEIVESORTEDPOSTS:
case RECEIVEPOST:
console.log(state);
return Object.assign({}, state, { items: action.items })
default:
return state
}
}
const rootReducer = combineReducers({ ReceivePosts, SelectTag, SelectSortOrder })
И mapStateToProps:
const mapStateToProps = (state) => {
const selectedTag = state.SelectTag.selectedTag;
const items = (state.ReceivePosts.items);
const tags = (state.ReceiveTags.tags);
const selectedSortOrder = state.SelectSortOrder.selectedSortOrder;
return {selectedTag, items, tags, selectedSortOrder};
}
У меня есть 2проблемы здесь:
a.Государство не помнит все данные.Например,Предположим, что сначала я выбрал тег, а затем получил элементы, в моем штате есть только элементы.SelectedTag не установлен в состоянии.
b.Я не уверен, почему mapStateToProps нужно имя редуктора.Например: const selectedTag = state.SelectTag.selectedTag;
На самом деле это должен быть state.selectedTag.Но мой код ожидает, что имя редуктора "SelectTag" выберет значение состояния.
Что я делаю не так?