组件化思想与虚拟DOM原理详解
React定义:React是一个用于构建用户界面的JavaScript库,由Facebook开发并开源。它采用组件化、声明式的开发模式,让构建交互式UI变得简单高效。
组件化概念:组件是React应用的基本构建块。每个组件都是一个独立的、可复用的代码单元,负责渲染UI的一部分。
// 传统方式:HTML、CSS、JS分离
<div id="app">
<header>...</header>
<main>...</main>
<footer>...</footer>
</div>
// 需要分别维护三个文件
// React方式:组件封装
function App() {
return (
<div>
<Header />
<MainContent />
<Footer />
</div>
);
}
// 每个组件都是独立的单元
虚拟DOM定义:虚拟DOM是React在内存中维护的一个轻量级的JavaScript对象,它是对真实DOM的抽象表示。
组件状态变化 → 重新渲染虚拟DOM → Diff算法比较差异 → 批量更新真实DOM
// 最简单的函数组件
function Welcome() {
return <h1>Hello, React!</h1>;
}
// 使用组件
function App() {
return (
<div>
<Welcome />
<p>这是我的第一个React应用</p>
</div>
);
}
组件命名规范:React组件名称必须以大写字母开头,这是为了区分普通HTML标签和React组件。
// 类组件(传统方式,现在推荐使用函数组件)
class Welcome extends React.Component {
render() {
return <h1>Hello, React!</h1>;
}
}
// 描述"如何做"
const button = document.getElementById('btn');
button.addEventListener('click', () => {
const text = document.getElementById('text');
text.style.color = 'red';
text.textContent = '按钮被点击了!';
});
// 描述"应该是什么样子"
function Button() {
const [clicked, setClicked] = useState(false);
return (
<div>
<button onClick={() => setClicked(true)}>
点击我
</button>
<p style={{color: clicked ? 'red' : 'black'}}>
{clicked ? '按钮被点击了!' : '等待点击...'}
</p>
</div>
);
}
React生态:React本身只是一个视图库,但拥有丰富的生态系统,包括路由、状态管理、构建工具等。
任务:创建一个简单的个人名片组件
要求:
ProfileCard的函数组件App组件中使用这个名片组件// 参考答案
function ProfileCard() {
return (
<div style={{border: '1px solid #ccc', padding: '20px', margin: '10px'}}>
<h2>张三</h2>
<p><strong>职位:</strong>前端工程师</p>
<p>热爱编程,专注于React技术栈开发</p>
</div>
);
}
function App() {
return <ProfileCard />;
}