У меня есть приложение для блога, которое я хочу отсортировать по голосам или заголовку , поэтому у меня есть следующие кнопки для сортировки:
<Button size='mini' onClick={() => {this.props.sortByVotes()}}>
Votes
</Button>
<Button size='mini' onClick={() => {this.props.sortByTitle()}}>
Title
</Button>
действия выглядят так:
export const sortByVotes = posts => ({ type: SORT_BY_VOTES })
export const sortByTitle = posts => ({ type: SORT_BY_TITLE })
И редуктор выглядит следующим образом:
case SORT_BY_VOTES:
return {
...state,
posts: state.posts.sort((a, b) => b.voteScore - a.voteScore)
}
case SORT_BY_TITLE:
return {
...state,
posts: state.posts.sort((a, b) => {
if (a.title > b.title) return 1
if (a.title < b.title)return -1
return 0
})
}
Наконец, в представлении Main.js я получаю сообщения в componentDidMount и показываю это так:
<Item.Group divided>
{this.props.posts.map((p, idx) =>
<PostSmall key={idx}
id={p.id}
title={p.title}
body={p.body}
category={p.category}
voteScore={p.voteScore}
/>
)}
</Item.Group>
Все еще в Main.js я сопоставляю сообщений из состояния так:
function mapStateToProps(state) {
return {
posts: state.posts.posts,
categories: state.categories.categories
}
}
Как видите, ничегоособое здесь.
Проблема в том, что состояние обновляется, как и ожидалось, но не просматривается.
Пока я не выяснил, как его решить и почему это происходит.
Любая помощь будет благодарна.