我必须行动FETCH_REPOS
和FILTER_BY_LANGUAGE
。当应用程序运行时,将从服务器获取存储库并加载到商店中。
然后我尝试按语言过滤
case 'FILTER_BY_LANGUAGE':
let newState = {
repos:[...new Set(state.repos)]
.filter(val => val.language == action.payload)
}
return newState
场景是,我获取 30 个存储库。假设 10 个是 JS,10 个 PHP 和 10 个 Node。
然后我过滤 JS 存储库。现在商店有 10 个 repos 而不是 20 个,所以当我尝试再次过滤我的 PHP 时,那些 repos 就消失了。
显示是再次重新获取数据还是我应该在反应道具中过滤数据?
以下是动作
export const fetchRepos = () => dispatch => {
fetch('http://localhost:4000/originalrepos')
.then(res => res.json())
.then(repos => {
let content = repos.map((data, i)=>{
return {
title: data.name,
username: data.owner.login,
avatar: data.owner.avatar_url,
date: data.updated_at,
}
})
dispatch({
type: 'FETCH_REPOS',
payload: content
})
})
}
export const filterByLanguage = language => dispatch => {
dispatch({
type: 'FILTER_BY_LANGUAGE',
payload: language
})
}
我fetchRepos
在mount,然后FILTER_BY_LANGUAGE
那种减少存储。一种预期的行为,所以我想知道我是否需要在其中运行相同的 fetchFILTER_BY_LANGUAGE
或一起删除该操作并注意在道具处过滤商店?认为这些是使用 redux 的原因,对吧?