2017-08-29 45 views
0

我正在使用React/Redux应用程序,我已经使reducer更新和删除用户配置文件地址,我必须将错误消息和成功消息从这些reducer传递到组件,我创建了const有成功的消息,REDX流程给出错误

成功的消息是工作正常,当我使用updateAddressByBuyerIdAddressIdSuccess,但如果 updateAddressByBuyerIdAddressIdSuccess用成功的消息,以及比它给错误控制台和我的代码没有编制,任何人都可以帮助如何解决这个问题,我的代码和错误显示在下面,在此先感谢

// @flow 
import { createReducer } from 'reduxsauce'; 
import I18n from '../i18n/I18n'; 
import Types from '../actions/Types'; 

// Init State 
export const INITIAL_STATE = { 
    addresses: null, 
    errorMessage: null, 
    successMessage: null, 
    isLoading: false, 
}; 

/* Generic error message */ 
const genericError = I18n.getText('error.generic', {}, 'Something went wrong'); 

/* Update an address */ 
export const updateAddressByBuyerIdAddressId = (state: Object = INITIAL_STATE) => ({ 
    ...state, 
    isLoading: true, 
    successMessage: null, 
    errorMessage: null, 
}); 

export const updateAddressByBuyerIdAddressIdSuccess = (state: Object = INITIAL_STATE, action: Object) => { 
    const successMessage = I18n.getText('account.address-updated', {}, 'Address updated!'); 
    return { 
     ...state, 
     address: action.address, 
     successMessage: successMessage, 
    }; 
}; 

export const updateAddressByBuyerIdAddressIdFailure = (state: Object = INITIAL_STATE, action: Object) => ({ 
    ...state, 
    errorMessage: action.errorMessage || genericError, 
    isLoading: false, 
}); 

/* Deleting an address */ 
export const deleteAddressByBuyerIdAddressId = (state: Object = INITIAL_STATE) => ({ 
    ...state, 
    isLoading: true, 
    successMessage: null, 
    errorMessage: null, 
}); 

export const deleteAddressByBuyerIdAddressIdSuccess = (state: Object = INITIAL_STATE, action: Object) => ({ 
    const successMessage = I18n.getText('account.address-deleted', {}, 'Address deleted!'); 
    return { 
     ...state, 
     address: action.address, 
     successMessage: successMessage, 
     } 
}); 

export const deleteAddressByBuyerIdAddressIdFailure = (state: Object = INITIAL_STATE, action: Object) => ({ 
    ...state, 
    errorMessage: action.errorMessage, 
    isLoading: false, 
}); 

export default createReducer(INITIAL_STATE, ACTION_HANDLERS); 

错误屏幕

enter image description here

回答

3

deleteAddressByBuyerIdAddressIdSuccess删除()括号。转换此

export const deleteAddressByBuyerIdAddressIdSuccess = (state: Object = INITIAL_STATE, action: Object) => ({ 
    const successMessage = I18n.getText('account.address-deleted', {}, 'Address deleted!'); 
    return { 
     ...state, 
     address: action.address, 
     successMessage: successMessage, 
     } 
}); 

这个

export const deleteAddressByBuyerIdAddressIdSuccess = (state: Object = INITIAL_STATE, action: Object) => { 
    const successMessage = I18n.getText('account.address-deleted', {}, 'Address deleted!'); 
    return { 
     ...state, 
     address: action.address, 
     successMessage: successMessage, 
     } 
}; 

正如圆括号像()自动返回注释添加,不需要关键字回报,但在你的情况,你想回到之前设置一个const所以你正在考虑它作为函数,所以只使用大括号{}。

+2

的解释了一下,圆括号像'()'自动返回,不需要关键字'return'但在你的情况想在返回前设置一个'const',所以只使用大括号'{}'。 –

1

您正在将功能块的大括号括起来,这应该用于隐式地使用返回一个对象(不含return关键字)。由于所涉及的函数包含return关键字,所以包围括号的主括号是不必要的。

删除,如下图所示的括号中应该解决的错误:

export const deleteAddressByBuyerIdAddressIdSuccess = (state: Object = INITIAL_STATE, action: Object) => { 
    const successMessage = I18n.getText('account.address-deleted', {}, 'Address deleted!'); 
    return { 
     ...state, 
     address: action.address, 
     successMessage: successMessage, 
     } 
};