ant.design pro
升级v5后,没有再使用dva,而umijs的useModel貌似只能在函数组件中使用。如果要把所有class组件改成函数组件,那工程量真的不是一般的大。那class组件中怎么调用初始的initialState
呢?
方法还是有的,造一个类似dva``connect
的函数,每个地方都要用,那就放在window下了
// src/app.tsx
import { useModel } from 'umi';
// 全局连接Model
window.connectModel = (key, name) => {
return (WrappedComponent) => {
return (props) => {
const model = useModel(name);
const data = { [key]: model };
return <WrappedComponent {...props} {...data} />;
};
};
};
class组件中使用,@window.connectModel('pageData', '@@initialState')
和class
中不能添加任何其他代码
// @是es7添加的修饰器
@window.connectModel('pageData', '@@initialState')
class Index extends PureComponent {
...
componentDidMount() {
const { pageData } = this.props;
const apiAuth = pageData?.initialState?.authList;
...
}
}
ant.design 4.x获取form表单的方式
ant.design v5 and 中如何在class中使用umijs的useModel调用initialState
react之ref提示:Using string literals in ref attributes is deprecated,不能使用字符串,怎么处理?
react不能在 render里设置state,也不能在componentWillReceiveProps里设置state,会导致性能问题。如果要通过属性改变state,怎么做呢?可以利用getDerivedStateFromProps生命周期函数
Next.js 是一个轻量级的 React 服务端渲染应用框架。
通过箭头函数或bind方式,对绑定事件传参
React Hot Loader是一个插件,允许React组件在不丢失状态的情况下进行实时重新加载。它适用于Webpack和其他支持热模块替换(HMR)和Babel插件的捆绑器
Warning: `getFieldDecorator` will override `value`, so please don't set `value` directly and use `setFieldsValue` to set it.
React 的核心思想是:封装组件。 各个组件维护自己的状态和 UI,当状态变更,自动重新渲染整个组件。 基于这种方式的一个直观感受就是我们不再需要不厌其烦地来回查找某个 DOM 元素,然后操作 DOM 去更改 UI