react针对不同类型,渲染不同组件

2019-11-22  本文已影响0人  奋斗的小小小兔子

业务中遇到一个场景是,不同类型,渲染不同组件,一开始使用的是switch ,代码很不优雅
经同事提醒,可以使用对象的方法统一处理

const PRODUCT = {
    CUSTOMIZE: {
        label: '自定义',
       value: 'customize',
    },
    SYSTEM: {
       label: '系统',
       value: 'system',
    },
}


const Details = ({ type, ...props }) => {
  const renderContentByType = {
    [PRODUCT.CUSTOMIZE.value]: {
      callback: ({ dataSource, onChange, form }) => <Customize dataSource={dataSource} onChange={onChange} form={form} />,
    },
    [PRODUCT.SYSTEM.value]: {
      callback: ({ dataSource, onChange, form }) => <ImgTitle dataSource={dataSource} onChange={onChange} form={form} />,
    },
  };

  return (
    <div>
      {
        renderContentByType[type] &&
         renderContentByType[type].callback({ ...props })
      }
    </div>
  );
};


上一篇 下一篇

猜你喜欢

热点阅读