Reactjs redux发送响应和返回消息
在我的操作中,我分派类型和负载,但如果我还希望res.status和返回的JSON消息包含在我的道具中,该怎么办。我将如何在我的行动和行动中做到这一点 行动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', })
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噢,谢谢,明白了,谢谢你的提示和解释明白了,谢谢你的提示和解释