import React, { Component } from “react”;
export default class App1 extends Component {
// 成员属性
num = 1;
doAdd() {
this.num++;
// 只有执行以下代码才能渲染DON(react不会自动渲染,只能由我们手动渲染;Vue则会自动渲染)
// sst
this.setState({});
}
render() {
return (
{this.num}
);
}
}
setState 具有异步性,在 setState 语法中有两个参数,第一个为需要修改的 state 属性,第二个是回调方法( DOM 渲染后执行);
import React, { Component } from “react”;
export default class App extends Component {
state = { num: 1 };
doAdd() {
// setState
// 参数1:需要修改设置的state属性
// 参数2:回调方法,DOM渲染完成后触发
this.setState({ num: 8 }, () => {
console.log(“页面渲染完毕的num:”, this.state.num);
});
console.log(“初始时的num:”, this.state.num);
}
render() {
return (
{this.state.num}
);
}
}
二、样式
引入 CSS 样式的方法有3种 | HTML 中,link 引入; |
css 中,@import 引入; | |
js中,import 引入。 |
在 src 下的 App.js 中引入 css 文件用到的是 import,需要注意 import 默认是引入模块,当引入文件时需要指定文件路径;
举例:动态绑定样式,调用方法使 div 的尺寸递增;
/App.css中/
.danger {
background-color: red;
width: 200px;
color: white;
border-radius: 10px;
padding: 10px;
}
.success {
background-color: green;
width: 200px;
color: white;
border-radius: 10px;
padding: 10px;
}
.warning {
background-color: orange;
width: 200px;
color: white;
border-radius: 10px;
padding: 10px;
}
//App.js中
// 动态绑定样式
import React, { Component } from “react”;
// 引入CSS文件
// import默认是引入模块,当引入文件时需要指定文件路径
import “./App.css”;
export default class App extends Component {
size = 18;
doBig() {
// 递增
this.size++;
// 通过sst刷新DOM,使页面刷新(React不会自动渲染,该语句必须写)
this.setState({});
}
render() {
return (
点击变大
{/* style的使用:内部嵌入样式 */}
style={{
color: “red”,
border: “1px solid blue”,
fontSize: this.size,
}}
Hello React!
{/* class的使用:调用其他文件的css样式 */}
{/* 动态绑定样式 */}
{/* 注意:调用函数时要加括号,要求立即执行;调用事件则不用加括号 */}
);
}
showClass() {
if (this.size < 22) return “success”;
if (this.size > 25) return “danger”;
return “warning”;
}
}
JSX 语法注释格式: {/* 注释内容 */}
三、图片的使用
在App.js中可引入远程和本地的图片;具体引入方式如下代码:
import React, { Component } from “react”;
// 导入图片
import imgURL from “./assets/2.jpg”
export default class App extends Component {
render() {
return (
{/* 远程图片资源 */}
{/* 本地图片资源 */}
{/* 图片在public目录下,直接引入 */}
{/* 图片在src/assets目录下,assets目录手动创建 */}
{/* 用法1:通过require引入(注意需要添加default后缀) */}
<img src={require(“./assets/2.jpg”).default} />
{/* 用法2:先用import导入图片,再使用 */}
);
}
}
四、双向绑定(表单元素)
如果需要获取表单输入框所收集到的信息,就要实现双向绑定;单向绑定是指将数据显示在页面组件上,双向绑定既能将程序中的变量自动同步到页面上显示,又能将页面上用户主动修改的新值自动更新回程序中的变量保存。
// 数据双向绑定
import React, { Component } from “react”;
export default class App extends Component {
state = { uname: “web前端” };
render() {
return (
<input
type=“text”
value={this.state.uname}
onChange={this._unameChanged}
/>
{/* 如果代码较为简单,可以将事件处理方法直接到JSX语句当中(简化) */}
<input
type=“text”
value={this.state.uname}
onChange={(e) => this.setState({ uname: e.target.value })}
/>
);
}
// 组件的事件处理方法
_unameChanged = (e) => {
console.log(e);
// 获取input中的value值,修改state中的值
this.setState({ uname: e.target.value });
};
}
五、条件渲染
举例:点击加减按钮将分数属性 store 进行 +10(-10) 操作,并判断该分数满足哪种条件;
// 条件渲染
import React, { Component } from “react”;
export default class App extends Component {
score = 60;
render() {
return (
得分: {this.score}
{" "}<button
disabled={this.score >= 100}
onClick={this._changeScore.bind(this, +10)}
加10分
<button
disabled={this.score <= 0}
onClick={this._changeScore.bind(this, -10)}
减10分
{/* 分数显示: >90 优秀 80-90 良好 >60 及格 <60 不及格 */}
{this.show()}
);
}
_changeScore(num) {
this.score += num;
console.log(this.score);
// 手动刷新DOM
this.setState({});
}
show() {
if (this.score > 90) return
if (this.score <= 90 && this.score > 80) return
if (this.score < 60) return
return
}
}
六、列表渲染
1.数组
举例: 将一个数组中的元素渲染为一组按钮和一组列表;
// 列表渲染
import React, { Component } from “react”;
export default class App extends Component {
skills = [“HTML”, “CSS”, “JavaScript”, “Node”, “vue”, “react”];
// 渲染一组button
showBtns() {
// 1.创建空数组
let arr = [];
// 2.遍历skill数组,将每一项包裹在button标签中
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
总结一下这三次面试下来我的经验是:
-
一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!
-
代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!
-
尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!
-
多刷面经!
我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】免费获取。祝大家早日拿到自己心怡的工作!
篇幅有限,仅展示部分内容
总结一下这三次面试下来我的经验是:
-
一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!
-
代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!
-
尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!
-
多刷面经!
我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】免费获取。祝大家早日拿到自己心怡的工作!
篇幅有限,仅展示部分内容