import React, { Component } from 'react';
import _ from 'lodash';

export default class ExtendsComponent extends Component {
  /**
   * 更新 state 的值
   * @param { Array<Object>: key, path, value } 对象数组
   * @param { function } cb 回调函数
   * @memberof ShopManagement
   */
  updateStateData = (arrs, cb) => {
    let dataObj = {};
    (arrs || []).forEach(item => {
      const { key, path, value } = item;
      let data = dataObj[key] || this.state[key];
      if (data == null) {
        return;
      }
      if (!path) {
        data = value;
      } else {
        _.set(data, path, value);
      }
      dataObj[key] = data;
    });
    this.setState(
      {
        ...dataObj,
      },
      () => {
        typeof cb === 'function' && cb();
      },
    );
  };

  doDispatch = (dispatchType, payload, callback) => {
    const { dispatch } = this.props;
    dispatch &&
      dispatch({
        type: dispatchType,
        payload,
        callback: resp => {
          callback && callback(resp);
        },
      });
  };
}
