Ant Design Pro最佳实践

带参数路由

 {
        name: 'product',
        icon: 'barcode',
        path: '/product',
        component: './Product/List',
      },
      {
        path: '/product/:id',
        hideInMenu: true, // # hide
        name: 'product-info',
        component: './Product/Info',
      },

请求返回后的回调

通过modal提交表单,POST成功之后需要有一个回调函数来关闭modal

model file (*.js)

*fetch({ payload, callback }, { call, put }) {
	// request here
	if (callback) callback() // ** 回调函数 **
})

page file (*.js)

this.props.dispatch({
	type: '***',
	payload: '***',
	callback: () => {
		// callback function
	}
})

一个页面,多个表单的处理

const CreateForm = Form.create()((props) => {
  const { form, onSubmit, } = props;
  const handleAdd = (e) => {
    e.preventDefault();
    form.validateFields((err, fieldsValue) => {
      if (err) return;
      onSubmit(fieldsValue);
    });
  };
  return (
    // form item
  );
});

// 省略
return (
	<CreateForm onSubmit={this.handleSubmit} />
)

表格的最佳实践

columns避免写在render里面

class List extends React.Component {
  this.columns = [
    {
      title: '名称',
      dataIndex: 'name',
    },
    {
      title: '描述',
      dataIndex: 'desc',
    },
    {
      title: '链接',
      dataIndex: 'url',
    },
  ];
  
  // ...
}

Select下拉加载更多

handleBrandPopupScroll = (e) => {
   e.persist();
   const { brandPage } = this.state;
   const { brand: { brandTotalPage } } = this.props;
   const target = e.target;
   if (target.scrollTop + target.offsetHeight === target.scrollHeight && (brandPage < brandTotalPage)) {
     // ajax
   }
}

//...

<Select onPopupScroll={this.handlePopupScroll}>
// Option
</Select>

数组操作

当拷贝一个数组的全部或者部分到一个新数组的时候,优先使用map和filter而不是forEach

  • map
var items = [{
  id: 1,
  name: 'john'
}, {
  id: 2,
  name: 'jane'
}, {
  id: 2000,
  name: 'zack'
}];

var names = items.map(function(item) {
  return item['name'];
});

// names: ['john', 'jane', 'zack']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值