React

Ant Design Pro 使用之 表单组件再封装

2019-02-16  本文已影响24人  anyesu

背景


使用 Ant Design Pro 开发有一段时间了,表单作为后台系统常见的功能当然很有必要封装一下,减少代码重复量。虽说 antd 的表单组件已经很不错了,但是使用上还是太麻烦了( 我就是懒 ),所以我就基于一些小小的约定封装了它的上层业务组件,更方便调用:

基础表单组件


比起 antd 表单组件的调用应该简洁不少吧

弹出式表单组件


模态框式表单组件


抽屉式表单组件


搜索表单组件


遇到的问题


在实际使用的过程中,弹框表单的子组件中可能会包含被 connect 的组件,光使用 antd 的弹框组件包裹就会报错:

Uncaught Error: Could not find "store" in either the context or props of "Connect(Demo)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(Demo)".

解决办法就是使用 reduxProvider 组件包裹一下

ReactDOM.render(
  // 使用 Provider 使子组件能从上下文中访问 store
  // 注意react-redux版本要和dva引用的版本一致,否则子组件使用@connect会出错
  // eslint-disable-next-line no-underscore-dangle
  <Provider store={window.g_app._store}>
    <Com {...props} visible onClose={close} />
  </Provider>,
  div
);

具体调用位置在上面 PopupForm.open 中,该代码已经按 dva 提供的方式进行解决了。

最后


完整代码已经传到 CodeSandbox ,点击查看antd 版 或者 antd pro 版


转载请注明出处:https://www.jianshu.com/p/c7120bf2e4f8

上一篇下一篇

猜你喜欢

热点阅读