一些踩坑记录

138 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

1、className设置多个class

import classNames from 'classnames';
<div className={classNames("class1", "class2")}></div>

需要安装classnames包:npm install classnames --save

2、路由传参

props.history.push({pathname: 'xxx', state: {'phone': 123}})

获取: props.history.location.state.phone

3、和后端联调时,可以复制curl给他,更方便~:

image-20211213113821242.png

4、antd使用:

  • ModalForm 不要footer 使用submitter={false}
<ModalForm submitter={false} />
  • 在modal中嵌套table,table的request不会在每次打开弹窗时请求数据

解决: 加一个visible ? (,,,) : null的 判断,visible是控制弹窗显示的变量

  • 自定义rules
const nickNameReg = /^[0-9a-zA-Z\u4e00-\u9fa5]*$/g;
rules={[
   {
     pattern: nickNameReg,
     message: '不支持特殊字符',
   },
 ]}

5、umijs的index.html文件对应的是 document.ejs

6、umijs里的 document.ejs 需要引用 config.ts的变量 应该这样写:

"<%= context.config.define.MOBILE_HOST_PATH %>"

通用写法: "<%= context.config.xxx %>"

模板里可通过 context 来获取到 umi 提供的变量,context 包含:

  • route,路由信息,需要打包出多个静态 HTML 时(即配置了 exportStatic 时)有效
  • config,用户配置信息

官方文档: umijs.org/zh-CN/docs/…

7、react中 在index.html中获取环境变量方法 :

"<%=xxxx %>"

8、控制台一行代码写完按回车就是执行 当按shift+enter 则就是换行

9、安装子包

git submodule init

git submodule update --remote

10、解决浏览器自动填充账号和密码的问题。

input属性typetext的标签上添加下面的属性
autoComplete="off"
input属性typepassword的标签上添加下面的属性
autoComplete="new-password"

11、chorme截长图:

Command + shift + p : 输入 capture full xxx 按回车

12、react中阻止冒泡:

e.stopPropagation()
e.nativeEvent.stopImmediatePropagation()

13、想创建的变量名和对象的属性名不一致,可以这么写:

const {a:a1} = obj;
console.log(a1);// 1

14、在useEffect中不能用async await: 可以自己封装一下:

const useAsyncEffect = (effect: () => Promise<void | (() => void)>,dependencies?: any[]) => {

 return useEffect(() => {

    const cleanupPromise = effect();

    return () => {

    cleanupPromise.then((cleanup) => cleanup && cleanup());

    };

 }, dependencies);

};