【发布时间】:2021-02-21 19:00:48
【问题描述】:
我构建了一个 react-redux 应用程序,它从 Rails API 获取评论列表 - 我真的想添加按字母升序/降序对评论列表进行排序的功能,但我不知道从哪里开始.
我是否需要添加我希望如何将此列表排序到状态,然后添加新操作才能执行此操作?或者有没有更简单的方法可以将它添加到显示评论列表的组件中?
如果可能的话,我会喜欢精确的代码示例,因为我真的不知道如何开始以及在哪里可以完成。
./components/reviews/ReviewsList.js
import React from 'react'
import { connect } from 'react-redux'
import { Link } from 'react-router-dom'
const ReviewList = props => {
const reviewCards = props.reviews.length > 0 ?
props.reviews.map(r => (
<div>
<br></br>
<p key={r.id}><Link className="App-link" to={`/app/v1/reviews/${r.id}`}>{r.attributes.title}</Link>
</p>
</div>)) :
null
return reviewCards
}
const mapStateToProps = state => {
return {
reviews: state.reviews.reviews
}
}
export default connect(mapStateToProps)(ReviewList)
App.js
import React from 'react';
import './App.css';
import ReviewsContainer from './containers/ReviewsContainer';
import ReviewList from './components/reviews/ReviewList'
import NewReviewForm from './components/reviews/NewReviewForm'
import Review from './components/reviews/Review'
import Header from './components/Header'
import Home from './components/Home'
import Footer from './components/Footer'
import { Switch, Route, withRouter } from 'react-router-dom'
import { connect } from 'react-redux';
class App extends React.Component {
render(){
const { reviews } = this.props
return (
<div className="App">
<Header />
<ReviewsContainer />
<Switch>
{/* Route renders appropriate components with the link path */}
<Route exact path='/' component={Home}></Route>
<Route exact path='/app/v1/reviews' component={ReviewList}></Route>
<Route exact path='/app/v1/reviews/new' component={NewReviewForm}/>
<Route exact path='/app/v1/reviews/:id' render={props => {
const review = reviews.find(review => review.id === props.match.params.id )
return <Review review={review} {...props}/>
}
// above renders the specific Review URL to the appropriate selection -
}/>
</Switch>
<br></br>
<Footer />
</div>
);
}
}
const mapStateToProps = state => {
return ({
reviews: state.reviews.reviews
})
}
export default withRouter(connect(mapStateToProps)(App))
store.js
import { createStore, applyMiddleware, compose, combineReducers } from 'redux'
import reviews from './reducers/reviewReducer'
import newReviewForm from './reducers/newReviewForm'
import thunk from 'redux-thunk'
const reducers = combineReducers({
reviews,
newReviewForm
})
const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = createStore(reducers, composeEnhancer(applyMiddleware(thunk)))
export default store
如果您还想查看其他代码,请告诉我。
【问题讨论】:
-
您希望对评论的哪个属性进行排序?
-
标题 - 这是评论列表当前显示的内容
标签: reactjs redux react-redux