五月前端细节总结

细节知识点

1、代码格式

数学操作符两侧留空格;props数据类型监测放在类前面;翻译;warning;函数名变量名是否最佳;减少不必要的props, state;减少不必要的请求;

使用一个代码(JS-css)尽量避免其他样式的改变(不需要的不要加,避免画蛇添足);

屏幕录制的结束快捷键:control + command + esc

webpack 内存溢出解决方法:配置

"scripts": {
    "start": "node scripts/start.js",
    "build": "node scripts/build.js",
    "test": "node scripts/test.js --env=jsdom",
    "dev": "export NODE_ENV=development && node config/server.js --max-old-space-size=4096 --inline --progress"
  },

一些常用的东西,例如 SeafileAPI,可以绑定到全局变量。例如设施 window.seafileAPI = seafileAPI 这样其他地方很容易调用这个变量了。

  • 编译成中文: 将 po 文件转化成 mo 文件。

run.sh python-env /data/dev/seahub/manage.py compilemessages

docker 内部运行 到seahub目录下运行,编译出来即可(需要几分钟)

run.sh python-env /data/dev/seahub/manage.py compilemessages
2、input

1、input submit 等受控组件,点击后需要 event.preventDefault 阻止默认事件(界面跳转)。这部分受控组件中的变量直接可以显示输入的内容。这里可以显示一部分用户输入(但是界面不会提醒用户输入的内容不规范)。

handleInputChange = (event) => {
  event.preventDefault();
  this.setState({
    value: event.target.value.toLowerCase.replace(/i/g, 'I');
  });
}

打开对话框后,内部的输入框 input 自动聚焦

传统的JS中,直接使用 focus 方法,即可使输入框对焦。

在 React-Strap 中,不能直接使用这个方法,在 Modal 设置 autofocus 貌似没用,所以获取DOM并对焦

<Input innerRef={input => {this.newInput = input;}}/>

constructor(props) {
  super(props);
  this.state = {};
  this.newInput = React.createRef();
}

componentDidMount() {
  this.newInput.focus();
  this.newInput.setSelectionRange(0, 0);
}

这样做就可以使得对话框打开后聚焦

回车键后提交内容,需要阻止默认事件

setSelectionRange 可以从一个被 focused 的 input (https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input) 元素中选中特定范围的内容。

input.setSelectionRange(2,5);
3、CSS3

设置一个界面动画的暂停和继续(JS点击按钮,动画暂停或者显示)

div {
  animation-play-state:paused;
  animation-play-state:running;
	-webkit-animation-play-state:paused; /* Safari 和 Chrome */
}
handleButtonClick = () => {
  this.refs.div.style.animationPlayState = 'running'
}

高度宽度单位 vh vw (view height width) 相对于视口的高度和宽度,取值是0~100。某个元素相对于浏览器视口的高度。主要用于浏览器兼容问题,谷歌浏览器实际宽度和视口宽度一致,一部分浏览器实际宽度和视口宽度不一致,所以需要设置这个宽度(当浏览器缩放时,图片尺寸会变化);

background-size 表示背景图片的尺寸:可以使用px/%/container/cover

PX是绝对尺寸,% 是相对于div的尺寸。container 表示背景铺满div,但是不够的地方是黑色的,背景图片可以完全显示在div上面。cover 表示背景铺满div并且可能超出,一部分背景图片显示不全。通常使用cover属性。

JS 中一个组件,调用另一个组件的方法时

if (obj) obj.method();
// 首先判断这个外部对象是否存在,然后再执行这个对象的方法(如果外部组件没有传入,这个组件不会报错)

react 中不需要用 状态变量传递信息(让一个状态刷新子组件的列表内容)如果有这种情况,一定是其他地方还有更好的写法,把刷新子组件列表内容放在父组件中

进行异步操作时,不确定服务器相应的时间,最好加一个loading图标。可以打开对话框,最好在对话框中显示加载状态。

react cookies 库

import cookie from 'react-cookies';

cookie.load('last_visiter') 
ookie.save('view_mode', value);

猜你喜欢

转载自blog.csdn.net/weixin_41697143/article/details/90401806