Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从最喜欢的旅行到最不喜欢的旅行_Javascript_Reactjs_React Redux - Fatal编程技术网

Javascript 从最喜欢的旅行到最不喜欢的旅行

Javascript 从最喜欢的旅行到最不喜欢的旅行,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我很难成功地将我的旅行从最多的喜欢分到最少的喜欢。我想使用sort()。我开始尝试将道具从商店传递到myTrip组件。我目前在mytrips中拥有的是,我正在使用map列出我目前所有的旅行。这是一个react redux应用程序。这是我的密码 import React from 'react' import { connect } from 'react-redux' import TripCard from './TripCard.js' const MyTrips = pro

我很难成功地将我的旅行从最多的喜欢分到最少的喜欢。我想使用sort()。我开始尝试将道具从商店传递到myTrip组件。我目前在mytrips中拥有的是,我正在使用map列出我目前所有的旅行。这是一个react redux应用程序。这是我的密码


 

  import React from 'react'
import { connect } from 'react-redux'
import  TripCard from './TripCard.js'

const MyTrips = props => {
  const tripCards = props.trips.length > 0 ?
      props.trips.map(t => <TripCard trip={t} key={t.id}/>) : null
    

      

  return (
      
      tripcards


  )
}

const mapStateToProps = state => {
  return {
    trips: state.myTrips,
    likes: state.mytrips
    
  }
}

export default connect(mapStateToProps)(MyTrips)


**MyTrips Reducer**

const initialState = []

export default (state = initialState, action) => {
switch (action.type) {
  case "SET_MY_TRIPS":
    return action.trips
  case "ADD_TRIP":
    return state.concat(action.trip)
  case "UPDATE_TRIP":
    return state.map(trip => trip.id === action.trip.id ? action.trip : trip)
  case "DELETE_TRIP":
    return state.filter(trip => trip.id === action.tripId ? false : true)
  case "CLEAR_TRIPS":
    return initialState
  default:
    return state
}
}

**AddTripLike Action**

  export const addTripLike = (tripData,history) => {
return dispatch => {
const sendableTripData = {
  likes: tripData.likes
}

return fetch(`http://localhost:3001/api/v1/trips/${tripData.tripId}/add_likes`, {
  credentials: "include",
  method: "PATCH",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify(sendableTripData)
})
.then(response => response.json())
.then(resp => {
  if (resp.error) {
    alert(resp.error)
  } else {
    //window.location.reload();
    console.log(resp.data)
    dispatch(updateTripSuccess(resp.data))
    history.push(`/trips/${resp.data.id}`)

  }
})
.catch(console.log)  
}
}

从“React”导入React
从“react redux”导入{connect}
从“./TripCard.js”导入TripCard
const MyTrips=props=>{
常量tripCards=props.trips.length>0?
props.trips.map(t=>):null
返回(
tripcards
)
}
常量mapStateToProps=状态=>{
返回{
trips:state.myTrips,
喜欢:state.mytrips
}
}
导出默认连接(MapStateTops)(MyTrips)
**MyTrips减速机**
常量initialState=[]
导出默认值(状态=初始状态,操作)=>{
开关(动作类型){
案例“设置我的行程”:
返回操作.trips
案例“添加行程”:
返回状态.concat(动作.trip)
案例“更新行程”:
返回状态.map(trip=>trip.id==action.trip.id?action.trip:trip)
案例“删除行程”:
返回状态.filter(trip=>trip.id==action.tripId?false:true)
案例“清除跳闸”:
返回初始状态
违约:
返回状态
}
}
**加三样作用**
导出常量addTripLike=(tripData,历史)=>{
返回调度=>{
常量sendableTripData={
喜欢:tripData.likes
}
回传(`http://localhost:3001/api/v1/trips/${tripData.tripId}/add_`{
证书:“包括”,
方法:“补丁”,
标题:{
“内容类型”:“应用程序/json”
},
正文:JSON.stringify(sendableTripData)
})
.then(response=>response.json())
。然后(resp=>{
如果(相应错误){
警报(相应错误)
}否则{
//window.location.reload();
控制台日志(响应数据)
调度(更新访问(响应数据))
history.push(`/trips/${resp.data.id}`)
}
})
.catch(console.log)
}
}

在您的情况下,它将如下所示:

trips.sort((a, b) => {
  b.likes - a.likes
}
要让您快速了解其工作原理,请执行以下操作:

当你使用(b-a)时,它会

  • 返回一个大于0的值,该值被解释为true
  • 返回一个0值,该值将被解释为false
  • 获取一个负值,该值也被解释为false
  • 这样,所有值都将按降序排序。 如果您想了解更多信息,请查看排序文档

    另一个有用的概述: