РЕДАКТИРОВАТЬ Мне нужно отсортировать карточки команд по алфавиту внутри моего компонента Контейнера с помощью кнопки. На данный момент код сортируется в алфавитном порядке без нажатия кнопки, так как у меня есть логика сортировки c, сопоставленная с состоянием. Синтаксис, как мне сортировать его только при нажатии кнопки и где должна быть выполнена сама сортировка?
Ранее у меня была сортировка с использованием регистра редуктора и действия, но теперь я хочу сделать это без использования действий или редукторов и просто с помощью React.
Контейнер, который отображает карты:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { NavLink } from 'react-router-dom';
import TeamCard from '../components/TeamCard'
import { displayObject } from '../actions/dataActions'
import CardColumns from 'react-bootstrap/CardColumns'
class DataContainer extends Component {
state = {
teamCards: [...this.props.teams.cards]
};
sortTeamCards = () => {
this.setState(prevState => ({
teamCards: [...prevState.teamCards].sort(function(team1, team2) {
if (team1.name < team2.name) {
return -1;
}
if (team1.name > team2.name) {
return 1;
}
return 0;
}),
}))
}
displayCards = () => {
switch(this.props.path) {
case "teams":
return (this.props.teams.cards.map(card => (
<NavLink style={{ color: "black" }} to={`/teams/${card.id}`} key={card.id}><TeamCard view={this.props.displayObject} info={card} /></NavLink>
)));
default:
return (<div>Empty</div>)
}
};
render() {
return (
<CardColumns>
<button id="sort-button" title="Sort Teams" onClick={this.sortTeamCards}>Sort Teams</button>
{this.displayCards()}
</CardColumns>
)
}
}
const mapStateToProps = state => {
return {
teamCards: state.teams,
teams: state.teams
}
};
const mapDispatchToProps = dispatch => {
return {
displayObject: (id, category, type) => dispatch(displayObject(id, category, type)),
}
};
export default connect(mapStateToProps, mapDispatchToProps)(DataContainer)