Reactjs redux发送响应和返回消息

Reactjs redux发送响应和返回消息,reactjs,redux,react-redux,Reactjs,Redux,React Redux,在我的操作中,我分派类型和负载,但如果我还希望res.status和返回的JSON消息包含在我的道具中,该怎么办。我将如何在我的行动和行动中做到这一点 行动 export const fetchUserPosts = () => (dispatch) => { fetch(`${currentPort}/user/recipes`, { withCredentials: true, credentials: 'include', })

在我的操作中,我分派类型和负载,但如果我还希望res.status和返回的JSON消息包含在我的道具中,该怎么办。我将如何在我的行动和行动中做到这一点

行动

export const fetchUserPosts = () => (dispatch) => {
  fetch(`${currentPort}/user/recipes`,
    {
      withCredentials: true,
      credentials: 'include',
    })
    .then((res) => {
      if (res.status !== 401) return res.json().then((data) => data);
      return { message: { msgBody: 'UnAuthorized' }, msgError: true };
    })
    .then((posts) => dispatch({
      type: FETCH_USER_POSTS,
      payload: posts,
    }));
};
减速器

export default function (state = initialState, action) {
  switch (action.type) {
    case FETCH_USER_POSTS:
      return {
        ...state,
        fetchUsersPosts: action.payload,
      };
    
    default:
      return state;
  }
}


如果我没有弄错,那么您正在组件内部使用此操作来发送获取。您无法使用减速器访问组件道具。您可以在组件中发送http请求,并使用该请求将响应存储在状态中。或者使用“react-redux”包中的connect映射redux存储以访问获取结果

import { connect } from 'react-redux'

    
const component = props => {
 //to access redux state in component use props.myprop
 
 return <div>{props.myprops.title}</div>
}

const mapStateToProps = state => {
 return{
  myprop: state.fetchUsersPosts
 }
}

export default connect(mapStateToProps)(component)
从'react redux'导入{connect}
常量组件=道具=>{
//要访问组件中的redux状态,请使用props.myprop
返回{props.myprops.title}
}
常量mapStateToProps=状态=>{
返回{
myprop:state.fetchUsersPosts
}
}
导出默认连接(MapStateTops)(组件)

如果这是您正在寻找的内容,您可以在

了解更多信息。如果我没有弄错,您正在组件内部使用此操作发送获取。您无法使用减速器访问组件道具。您可以在组件中发送http请求,并使用该请求将响应存储在状态中。或者使用“react-redux”包中的connect映射redux存储以访问获取结果

import { connect } from 'react-redux'

    
const component = props => {
 //to access redux state in component use props.myprop
 
 return <div>{props.myprops.title}</div>
}

const mapStateToProps = state => {
 return{
  myprop: state.fetchUsersPosts
 }
}

export default connect(mapStateToProps)(component)
从'react redux'导入{connect}
常量组件=道具=>{
//要访问组件中的redux状态,请使用props.myprop
返回{props.myprops.title}
}
常量mapStateToProps=状态=>{
返回{
myprop:state.fetchUsersPosts
}
}
导出默认连接(MapStateTops)(组件)

如果这是您想要的,您可以在

了解更多信息,您可以将多个项目组合到一个有效负载中。我会为成功和错误创造不同的行动。使用相同的操作会使还原逻辑复杂化。使用async/await比使用嵌套承诺更容易

这是一个工作示例,使用:

const FETCH\u USER\u POSTS\u SUCCESS='FETCH\u USER\u POSTS\u SUCCESS'
const FETCH\u USER\u POSTS\u FAILED='FETCH\u USER\u POSTS\u FAILED'
常量fetchPostSuccessAction=(有效负载)=>({
键入:“获取\用户\发布\成功”,
有效载荷,
})
const fetchPostFailureAction=(有效负载)=>({
键入:“获取\用户\发布\失败”,
有效载荷,
})
const fetchUserPosts=()=>异步调度=>{
const res=等待取数('https://api.spacexdata.com/v3/launches/latest');
if(res.status!==401){
const{ships:posts}=wait res.json();
分派(fetchPostSuccessAction)({
帖子,
状态:res.status,
}))
}否则{
分派(fetchPostFailureAction({
消息:{msgBody:'UnAuthorized'},
}))
}
};

fetchUserPosts()(console.log)
您可以将多个项目组合到一个有效负载中。我会为成功和错误创造不同的行动。使用相同的操作会使还原逻辑复杂化。使用async/await比使用嵌套承诺更容易

这是一个工作示例,使用:

const FETCH\u USER\u POSTS\u SUCCESS='FETCH\u USER\u POSTS\u SUCCESS'
const FETCH\u USER\u POSTS\u FAILED='FETCH\u USER\u POSTS\u FAILED'
常量fetchPostSuccessAction=(有效负载)=>({
键入:“获取\用户\发布\成功”,
有效载荷,
})
const fetchPostFailureAction=(有效负载)=>({
键入:“获取\用户\发布\失败”,
有效载荷,
})
const fetchUserPosts=()=>异步调度=>{
const res=等待取数('https://api.spacexdata.com/v3/launches/latest');
if(res.status!==401){
const{ships:posts}=wait res.json();
分派(fetchPostSuccessAction)({
帖子,
状态:res.status,
}))
}否则{
分派(fetchPostFailureAction({
消息:{msgBody:'UnAuthorized'},
}))
}
};

fetchUserPosts()(console.log)
您的
负载可以是任何东西!现在它只是一个
posts
数组,但它可以是一个具有属性
posts
状态
消息
等的对象。当然,您必须相应地更改减速机中的
获取用户posts:action.payload
。@Lindapaste oh gotcha,谢谢您的
有效载荷可以是任何东西!现在它只是一个
posts
数组,但它可以是一个具有属性
posts
状态
消息
,等等的对象。当然,您必须相应地更改减速机中的
获取用户posts:action.payload
。@Lindapaste噢,谢谢,明白了,谢谢你的提示和解释明白了,谢谢你的提示和解释