专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

React入门:从入口文件到组件化的奥秘

ins518 2024-09-21 00:40:10 技术文章 10 ℃ 0 评论

在前端开发领域,React和Vue的出现,标志着前端开发者可以“Say goodbye to DOM coding”,即不必再直接与DOM元素频繁互动,他们引领着我们告别传统的DOM操作时代,迈入MVVM(Model-View-ViewModel)模式的崭新天地。

通过上一篇文章 [初识React框架](https://juejin.cn/post/7385752495534522383),我们能知道React是一个由Facebook开发并维护的开源JavaScript库,并以其高效、灵活的组件化思想,成为了构建用户界面的首选工具之一。它通过采用组件化的方式来组织代码,使得复杂的UI结构变得易于管理和维护。本文将从一个简单的React项目入口文件`index.js`出发,逐步揭开React的神秘面纱,探索其核心概念与机制,直至深入组件化的精髓。

一、React入门

我们来到React项目入口文件index.js中,这是React应用的起点。

import ReactDOM from 'react-dom/client';

const root=ReactDOM.createRoot(

document.getElementById('root')

);

root.render(<h1>征程</h1>)

通过import ReactDOM from 'react-dom/client';引入了React的DOM渲染库,而ReactDOM.createRoot()方法则标志着React接管DOM的第一步。这个方法接收一个DOM元素作为参数(如document.getElementById('root')),为React创建了一个挂载点。从这一刻起,React将独立管理这部分DOM,也就是这里将成为React展示的舞台,根节点root 内部就是react的世界了,此后的所有React组件将在这个根节点下进行渲染。root.render()方法接收一个React元素作为参数,并将其渲染到与root关联的DOM节点上。

二、JSX:让JavaScript拥抱HTML

在React的世界里,JSX是最具特色的语法糖。通过允许在JavaScript中直接编写类似HTML的代码,极大地提升了代码的可读性和编写效率。

import ReactDOM from 'react-dom/client';

import React from 'react';

const root=ReactDOM.createRoot(

document.getElementById('root')

);

// react 的法宝 : JSX语法

const element1 = (<h1>正大会</h1>)

const element2 =React.createElement('div',{id:'name'},'正小会')

// root.render(element1)

root.render(element2)

<h1>正大会</h1>这样的JSX表达式,不仅直观地描述了UI结构,而且与React.createElement()相比,更加简洁明了。JSX背后,是编译器将其转换为React元素(如React.createElement('h1', null, '正大会'))的过程,从而确保了JavaScript引擎的正常解析执行。也就是说明,在react中我们只要运用JSX,就可以在JavaScript直接编写HTML。

三、职责分离

React鼓励我们以函数或类的形式定义组件,每个组件负责渲染一块UI,这种设计模式大大促进了代码的复用和维护。

import ReactDOM from 'react-dom/client';

import React from 'react';

// module 模块化的导入

import APP from './app/app';

const root =ReactDOM.createRoot(

// 就做这一次DOM查找,ReactDOM来做查找

// DOM编程 性能很差

document.getElementById('root')

)

root.render(<APP/>)

index.js就用于生成一个root节点,而其他的东西就交给其他的组件APP,但是要注意的是,root.render()接受的是一个参数,所以根组件里必须返回一个值。

// 根组件

// react 使用函数创建一个组件,一定要返回JSX

// 页面由组件组成(更利于复用)

const APP = ()=>{

const element = (

<div className='container'>

<h1> classname='title'>周老板</h1>

</div>

)

return element

}

// module 模块化的输出

export default APP

通过定义const APP = ()=>{...}这样的函数创建一个组件,而在组件中我们可以写一堆的HTML、css、js,而页面将由组件组成,更利于复用。而组件内部可以继续嵌套其他组件(AppHeader组件),如<AppHeader />,形成了一个组件树结构,这便是React应用的核心架构。

import AppHeader from './components/app-header';

const APP = ()=>{

const element = (

<div className='container'>

<AppHeader/>

<AppHeader />

</div>

)

return element

}

export default APP

四、组件化

组件化是React的灵魂。它允许我们将界面拆分成多个独立、可复用的部分,每个部分都有自己的状态和生命周期。

const AppHeader = (props)=>{

const {name}= props;

return (

<div className="app-header">

<h1 className="title">{name}</h1>

</div>

)

}

export default AppHeader

AppHeader组件是可以传入参数的,别忘了他是由函数来创建的。通过属性(props)传递数据(如name),这样就可以获取调用AppHeader的那个组件中的name值,更加利于复用。

import AppHeader from './components/app-header';

const APP = ()=>{

const element = (

<div className='container'>

<AppHeader name='吴彦祖'/>

<AppHeader name='彭于晏'/>

</div>

)

return element

}

export default APP

组件之间可以进行通信,同时保持各自的纯净性,降低了耦合度。组件化不仅提高了代码的组织性和可测试性,也为大规模应用的开发提供了有力支撑。

结语

React不仅仅是一个库,它代表了一种全新的前端开发范式。通过ReactDOM.createRoot与JSX的巧妙结合,React让我们能够在JavaScript中以声明式的方式描述UI,通过组件化思想实现界面的模块化开发。这一系列机制,不仅提升了开发效率,也使得代码更易于理解和维护。不愧是“前端第一框架”,这可不是虚名昂。接下来,我将持续学习并分享,让我们一起加油!!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表