1.保证对象不为假的方法
运算符 || 是逻辑或(OR)运算符,它用于判断表达式的真假。当使用 || 运算符时,如果第一个表达式(在这种情况下是对象)为真,则返回第一个表达式的值;如果第一个表达式为假,则返回第二个表达式的值。这种用法常用于确保对象不为假值,同时提供一个默认的空对象作为备选。
var result = obj || {};
//等价于
var result = obj ? obj : {};2.forwardRef
forwardRef 是 React 中的一个函数,用于在函数组件中转发(forward)ref。它是 React 提供的一种高级技术,用于在组件之间传递 ref。
在 React 中,ref 用于引用组件或 DOM 元素,允许我们访问组件的实例或 DOM 节点。通常,ref 只能在类组件中使用,并通过 React.createRef() 或回调函数的方式来创建和传递。然而,函数组件通常是无状态的,没有实例来引用,因此无法直接使用 ref。
**forwardRef 的作用就是解决函数组件中无法直接使用 ref 的问题。**通过使用 forwardRef,我们可以将 ref 传递给函数组件,并在组件内部访问 ref。——> 注意,在组件内部使用了 ref,也不一定要给 ref 绑定为dom,ref 本质上可以绑定任何值
使用 forwardRef 的示例:
import React, { forwardRef } from 'react';
const MyComponent = forwardRef((props, ref) => {
// 在这里可以访问 ref
return <div ref={ref}>Hello, World!</div>;
});
// 使用 MyComponent
const App = () => {
const myRef = React.createRef(); //这里的 myRef 对应的就是子组件MyComponent的那个 helloworld 的 div 元素dom,成功取到了子组件的实例对象!
return <MyComponent ref={myRef} />;
};在上面的示例中,我们定义了一个函数组件 MyComponent 并使用 forwardRef 包裹它。这样就可以将 ref 参数传递给组件,并在组件内部使用 ref。
在使用 MyComponent 的地方,我们创建了一个 ref(myRef),然后将它传递给 MyComponent 的 ref 属性。MyComponent 在内部使用 ref 来引用 <div> 元素。
通过这种方式,我们可以在函数组件内部使用 ref,并将其传递给需要引用的元素或组件。这对于访问子组件的实例或 DOM 元素非常有用,以便进行操作或获取信息。
注意:返回值也可以是一个类式组件
当 forwardRef 中的 return 返回一个类式组件时,它将使函数组件在外部使用时可以接受和传递 ref。这样,你可以通过 ref 属性引用类式组件的实例。
import React, { forwardRef } from 'react';
class MyComponent extends React.Component {
render() {
return <div>Hello, World!</div>;
}
}
const ForwardedComponent = forwardRef((props, ref) => {
return <MyComponent ref={ref} {...props} />; //返回值是类式组件
});
// 使用 ForwardedComponent
const App = () => {
const myRef = React.createRef(); //成功取到了子组件(类式组件MyComponent)的实例对象
return <ForwardedComponent ref={myRef} />;
};3.把组件作为 props 传入容器组件中
这是 react 实现了类似插槽的功能,被传入的组件是公共的内容,模版组件(例如模态框外壳)
而传入的内容是针对不同情况有不同的代码!
定义:

使用:

4.生成随机字符串
Math.random().toString().substring(3, 10) 是一段 JavaScript 代码,用于生成一个随机的字符串。
Math.random() 是一个 JavaScript 中的内置函数,它返回一个介于 0(包含)和 1(不包含)之间的随机浮点数。例如,可能返回 0.123456789。返回的数小数点后面有很多位。
所以可以实现这个效果
5.setState回调函数
例子:
this.setState({
remove: true
}, () => {
this.props.$el && this.props.$el.parentNode && (this.props.$el.parentNode.removeChild(this.props.$el))
})用于更新组件的状态,并在状态更新完成后执行一个回调函数。
this.setState({ remove: true }, () => { ... }): 这是一个 setState 方法的调用,用于更新组件的状态。它接受一个对象作为第一个参数,其中包含要更新的状态属性和对应的新值。在这个例子中,要更新的状态属性是 remove,新值是 true。同时,作为 setState 的第二个参数,传递了一个回调函数,用于在状态更新完成后执行额外的操作。
6.&&代替 if 实现条件语句
例子:
this.props.$el && this.props.$el.parentNode && (this.props.$el.parentNode.removeChild(this.props.$el))
在回调函数中,这行代码用于检查 this.props.$el 是否存在以及其父节点是否存在,并在存在的情况下移除 this.props.$el 元素
等价于代码:
if(this.props.$el && this.props.$el.parentNode){
this.props.$el.parentNode.removeChild(this.props.$el);
}7.vscode点击import进入文件的配置方法

在根目录中创建 jsconfig.json,进行如下配置:
{
"compilerOptions": {
"target": "es6",
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
"@*": ["src/*"]
}
},
"exclude": ["node_modules", "dist"],
"include": ["src/**/*"],
"vueCompilerOptions": {
"experimentalCompatMode": 2
}
}8.登录功能的基本流程
1.调用登录接口得到 token
2.根据 token 调用 getUserInfo 接口得到用户信息,并进行本地存储
9.Object.keys()和Object.values()
Object.keys() 是 JavaScript 的一个内置函数,用于返回一个由给定对象的所有可枚举属性组成的数组。
例子:Object.keys(localStorage) 返回的是一个由 localStorage 的所有键名组成的数组。
Object.values() 遍历对象的每个属性并返回相应的属性值,然后将这些属性值组成一个新的数组返回。
10.vue2不要写两个 data
不要写两个 data,否则会报错找不到!
