npm install --save make-react-great-again
- 使用
HOC
对react
的class组件
进行装饰,提供一个@page 的装饰器 - 提供一个 preload 方法,可将初始化时页面所需的数据请求放入,同时提供一个 loading 状态
- 把组件初始时的请求从生命周期中转移到
preload
中,结果直接挂载到props
上
import { page } from "make-react-great-again";
// 可以将异步数据请求的逻辑放在class外,不用写生命周期
const getListData = props => axios.get("/mock/list.json").then(data => data);
const getListDetailData = props => axios.get("/mock/listDetail.json").then(data => data);
// 装饰器语法需要项目环境支持
@page({
preload: props => {
listData: getListData(props),
listDetailData: getListDetailData(props),
}
})
class Example extends React.Component {
render() {
// 装饰后,异步请求的数据会挂载到props上
const { listData, listDetailData } = props;
console.log(listData, listDetailData);
return <div>...</div>;
}
}
注意
- 如果
preload
中指定的 key 与父组件传过来的props
中字段重复,则父组件传递的props
字段会被覆盖!!!
preload
主要为了页面初始化时发起异步请求,请不要将常量字段写在此处,虽然可以正常挂载到props
上,但是没必要- 多个请求时,如果其中一个请求出错或者
rejected
,会返回 undefined,但不会影响其他几个请求。
MIT © yangdepp © yx675258207