世界上最伟大的投资就是投资自己的教育
全场限时 5 折
所有回复
2019-09-05
-
import * as compose from "lodash.flowright";
compose 已经被移除了
17:34 -
对 JesusCracker · 太乙 回复
那 chrome 的插件叫什么?
上面文字说明里有链接
17:19 -
对 JesusCracker · 太乙 回复
那 chrome 的插件叫什么?
Redux DevTools
17:19 -
对 guxiaobai · 大罗 回复
关键点
- jwt 存储到 cookie 里面去,更安全,可以在过期之前服务端自动更新
- 我自己之前也是存储在
localstronge
里, 现在后端改成 cookie 与 v4 版本配合暂时没发现问题
const myRequest = (url: string, options: RequestOptionsInit | undefined = {}) => { return request(url, { ...options, headers: { ...options!.headers, Authorization: `Bearer ${localStorage.getItem('token')}`, }, }); }; export default myRequest;
14:01 -
对 guxiaobai · 大罗 回复
关键点
- jwt 存储到 cookie 里面去,更安全,可以在过期之前服务端自动更新
- 我自己之前也是存储在
localstronge
里, 现在后端改成 cookie 与 v4 版本配合暂时没发现问题
const myRequest = (url: string, options?: RequestOptionsInit | undefined) => { if (options) { return request(url, { ...options, headers: { ...options!.headers, Authorization: `Bearer ${localStorage.getItem('token')}`, }, }); } else { return request(url, { headers: { Authorization: `Bearer ${localStorage.getItem('token')}`, }, }); } }; export default myRequest;
13:44
2019-09-04
2019-09-03
-
对 韦威 · 化神 回复
接楼上的问题
function isNumber(value: any): value is number { // 可以进行进一步处理 return typeof value === "number"; } function isString(value: any): value is string { return typeof value === "string" }
value is number
和value is string
好像没什么用啊?https://blog.csdn.net/u011607490/article/details/85410010 可能和这个有点关系
21:26 -
对 ZuhuaLiu · 凡人 回复
是不是开了啥代理,看一下 gitconfig
15:37 -
import ApolloClient from 'apollo-boost'; const client = new ApolloClient({ uri: 'https://48p1r2roz4.sse.codesandbox.io', });
老师我看文档现在改成这种写法了,用法又更新了是吧。
14:58 -
14:39
-
老师,如何去除页脚,我用视频的方式只能覆盖,无法去除,就算将很多注释掉,页脚还是存在
import ProLayout, { SettingDrawer,DefaultFooter} from '@ant-design/pro-layout';
import React, { useEffect } from 'react';
import Link from 'umi/link';
import { connect } from 'dva';
import { formatMessage } from 'umi-plugin-react/locale';
import Authorized from '@/utils/Authorized';
import RightContent from '@/components/GlobalHeader/RightContent';
import { isAntDesignPro } from '@/utils/utils';
import logo from '../assets/logo.svg';
// import {DefaultFooter} from "@ant-design/pro-layout";/**
- use Authorized check all menu item */
const menuDataRender = menuList =>
menuList.map(item => {
const localItem = { ...item, children: item.children ? menuDataRender(item.children) : [] };
return Authorized.check(item.authority, localItem, null);
});const links = [
{
key: '',
title: '',
href: '',
blankTarget: true,
},
{
key: '',
title: '',
href: '',
blankTarget: true,
},
];const copyright = '';
//所有 footerRender 都注释掉,页脚还是存在,找不到页脚是在哪里引入的
const footerRender = (_, defaultDom) => {
if (! isAntDesignPro()) {
// return defaultDom;
return ( <>
</>
)
}// return (
// style={{
// <>
// {defaultDom}
//
// padding: '0px 24px 24px',
// textAlign: 'center',
// }}
// >
//
// // src="https://www.netlify.com/img/global/badges/netlify-color-bg.svg"
// width="82px"
// alt="netlify logo"
// />
//
//
// </>
// );
}
const BasicLayout = props => {
const { dispatch, children, settings } = props;
/**- constructor */
useEffect(() => {
if (dispatch) {
dispatch({
type: 'user/fetchCurrent',
});
dispatch({
type: 'settings/getSetting',
});
}
}, []);
/**- init variables */
const handleMenuCollapse = payload => {
if (dispatch) {
dispatch({
type: 'global/changeLayoutCollapsed',
payload,
});
}
};return (
<>
logo={logo}
onCollapse={handleMenuCollapse}
menuItemRender={(menuItemProps, defaultDom) => {
if (menuItemProps.isUrl) {
return defaultDom;
}return <Link to={menuItemProps.path}>{defaultDom}</Link>; }} breadcrumbRender={(routers = []) => [ { path: '/', breadcrumbName: formatMessage({ id: 'menu.home', defaultMessage: 'Home', }), }, ...routers, ]} itemRender={(route, params, routes, paths) => { const first = routes.indexOf(route) === 0; return first ? ( <Link to={paths.join('/')}>{route.breadcrumbName}</Link> ) : ( <span>{route.breadcrumbName}</span> ); }} footerRender={footerRender} menuDataRender={menuDataRender} formatMessage={formatMessage} rightContentRender={rightProps => <RightContent {...rightProps} />} {...props} {...settings} > {children} </ProLayout> <SettingDrawer settings={settings} onSettingChange={config => dispatch({ type: 'settings/changeSetting', payload: config, }) } /> </>
);
};export default connect(({ global, settings }) => ({
collapsed: global.collapsed,
settings,
}))(BasicLayout);09:51 -
老师,请问如何去除全局页脚,我用视频的方法可以覆盖,但是无法去除
09:49
2019-09-02
-
老师,验证码可否讲讲封装成组件呢?_^
20:32 -
17:10
-
而且这个貌似不能传输 post 属性 ,schema 属性是写死的,这个能进行更改操作吗
00:47 -
对 随风 · 练气 回复
你用我这个地址试下喽
https://5a54227777e1d20012fa0723.mockapi.io/api/v1/records
他应该用不了 前面有个号码 那个貌似是自生成 api key 每个人 都不一样 他得有你登录账号才能用
00:45 -
对 twoheart · 太乙 回复
复习这里的时候发现,mockAPI 使用 POST 方法添加数据的时候,无法添加自己写的数据,只会按模版的数据添加一条。例如:
{ "id": '5', "date": '2019-10-11', "title": 'title-5', "amount": '100' }
实际添加的则是:
{ "id": "5", "date": "2018-06-16T04:17:51.789Z", "title": "District Division Coordinator", "amount": 27528 }
00:43 -
https://5d4ba54700dbb10014879e99.mockapi.io/api/v/records/:4 我是这么写的 正常只应该返还 id 为四 的操作 为啥 全部返还回来了
00:41 -
00:40
© 汕尾市求知科技有限公司 | Rails365 Gitlab | Qiuzhi99 Gitlab | 知乎 | b 站 | 搜索
粤公网安备 44152102000088号 | 粤ICP备19038915号
Top