问题:React Native with redux:我们可以有初始的动作载荷吗

按照设计,我们是否允许在定义动作时使用默认有效负载?

export const fetchApi = (payload = { propA: 'asdf', propB: new Date() ... etc }) => {
   return {
     type: 'FETCH_DATA',
     payload: payload
   };
}

注意:它可以用作这个payload的签名吗?我的意思是传入的有效负载必须具有这些数据。

解答

如果需要,您可以在减速器中定义默认有效负载。例如在您的 Action.js 中:

export const fetchApi = (payload) => {
   return {
     type: 'FETCH_DATA',
     payload: payload
   };
}

在你的 Reducer.js 中:

...
case 'FETCH_DATA':
    let defaultPayload = { propA: 'asdf', propB: new Date() ... etc }

return {
    ...state,
    fetchDataPayload: action.payload || defaultPayload
};

或者,如果您想在 initialData 和您的真实有效负载之间进行混合:

...
case 'FETCH_DATA':
    let defaultPayload = { propA: 'asdf', propB: new Date() ... etc }

return {
    ...state,
    fetchDataPayload: {...defaultPayload, ...action.payload}
};

在这种情况下,如果在 action.payload 中找到公共属性,它将覆盖 defaultPayload 中的那些定义。

希望这可以帮助 !

Logo

React社区为您提供最前沿的新闻资讯和知识内容

更多推荐