更新状态时检查值是对象

时间:2017-08-09 17:47:59

标签: javascript reactjs

我将以下数据发送到我的reducer:

const data = {
  value: { age, gender, ethnicity },
  field: 'accessCode',
  actionType: 'ADD_DETAILS',
};

this.props.dispatch(formHandler(data));

如何查看值prop是单个值还是具有三个值的对象?

我的行动:

export function formHandler(data) {
    return function(dispatch) {
        // check data.value is an object with three value 
        if (..) {
            this.props.dispatch(
                showError({
                    type: 'SHOW_MODAL',
                    modalType: 'SHOW_ERROR',
                })
            );
        } else {
            dispatch({
                type: data.actionType,
                field: data.field,
                value: data.value,
            });
        }
    };
}

我的reducer更新状态:

switch (action.type) {
    case ADD_LANGUAGE:
    case ADD_ACCESSCODE:
    case ADD_ACCESSCODE:
    case ADD_DRINKS_CONCERN:
      return {
        ...state,
        [action.field]: action.value,
      };
    case ADD_DETAILS:
      return {
        ...state,
        ...action.value,
      };

2 个答案:

答案 0 :(得分:2)

关于如何检查的评论,这可能是一个开始。

if (typeof(data.value) === 'object' && Object.keys(data.value).length === 3)

我不确定您的需求有多具体(例如它是否需要正好3个键),但随意扩展我可以插入。

答案 1 :(得分:0)

如果您可以使用Object原型,可以使用以下方法进行测试:

    Object.getOwnPropertyNames(data).length

Object.getOwnPropertyNames返回一个数组,其中包含所有属性值,其长度属性包含在其中。