React 初探

113 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

React 初探

React 是一个用于构建用户界面的 JavaScript 库,核心专注于视图,目的实现组件化开发

组件化的概念

组件化是指**解耦复杂系统时将多个功能模块拆分、重组的过程,有多种属性、状态反映其内部特性。

我们可以很直观的将一个复杂的页面分割成几个独立功能块,每个功能块有自己独立的样式、逻辑。我们可以根据页面需求拼装成一个复杂的页面。这样不仅仅可以减少逻辑的复杂度,又实现了代码的重用。

  • 可组合:一个组件可以和另一个组件进行拼装使用
  • 可重用:每个组件都是具有独立功能,他可以被使用在多个场景中
  • 易维护:能组件就包含自己独立的逻辑,更容易维护

搭建React开发环境

cnpm i create-react-app -g
create-react-app react-demo
cd react-demo
npm start

JSX

为什么使用 JSX?

React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合,比如,在 UI 中需要绑定处理事件、在某些时刻状态发生变化时需要通知到 UI,以及需要在 UI 中展示准备好的数据。

在 JSX 中嵌入表达式

在下面的示例中,我们将调用 JavaScript 函数 hello(user) 的结果,并将结果嵌入到 <h1> 元素中。

function hello(name) {
  return `Hello ${name}`;
}

const element = (
  <h1>
    Hello, {hello('World')}!  </h1>
);

用一个表达式书写 JSX

在编译之后,JSX 表达式会被转为普通 JavaScript 函数调用,并且对其取值后得到 JavaScript 对象。

function getGreeting(value) {
  if (value) {
    const list = () => {
      const res = [];
      for (var i = 0; i < value; i++) {
        res.push(<h2 key={i}>hello {i}</h2>)
      }
      return res
    }
    return (
      <div>Hello, {list()} </div>
    )
  }
  return <h1>Hello, Stranger.</h1>;
}

你还可以用 JSX 表示对象

const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);

以上代码 等于 以下代码

const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

JSX 中指定属性

相信熟悉使用vue的同学应该很熟悉

<a :href="url"> link </a>;

jsx 中也有类似的语法

<a href="{url}"> link </a>;

不过是将 :xxx="" 变成了 xxx="{}"