在React官方教程中学到的笔记(JSX、React元素、React组件)

这是一个简短的总结。

    • JSX

 

    • Rendering Elements

 

    Components and Props

JSX -> JSX

这是一种用于JS的扩展语法,被推荐在React中使用。

const element = <h1>Hello, world!</h1>;

在{}中能够嵌入JS语法。

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};

const element = (
  <h1>
    Hello, {formatName(user)}!
  </h1>
);

ReactDOM.render(
  element,
  document.getElementById('root')
);

CodePen 独立运营的在线社区频道,让用户可以实时编辑和展示 HTML、CSS 和 JavaScript 代码。

在将JS放入HTML属性时,请注意不要添加””。

const element = <img src={user.avatarUrl}></img>;

请注意,属性的标签应采用驼峰命名法。(例如:className、tabIndex)

如果要定义嵌套的DOM,请使用括号()进行包围。

const element = (
  <div>
    <h1>Hello!</h1>
    <h2>Good to see you here.</h2>
  </div>
);

作为跨站脚本攻击的防范措施,嵌入在JSX中的值会在React DOM渲染之前进行转义,因此很安全。

// titleに危険な値が入っていてもエスケープされる.
const element = <h1>{title}</h1>;

React元素和渲染

通过Babel的转换,JSX变成了React元素的对象。

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

// こうなって
const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

// こうなる
const element = {
  type: 'h1',
  props: {
    className: 'greeting',
    children: 'Hello, world!'
  }
};

在React中,用于操作的范围被称为根DOM节点,并附带一个名为root的ID。通常情况下,React应用程序中只会存在一个根DOM节点。我们可以使用ReactDOM.render()来操作这个节点的内容。在常规的React应用程序中,通常只需要调用一次ReactDOM.render()。

// ルートDOMノード
<div id="root">
    <!-- This element's contents will be replaced with your component. -->
</div>
//ルートDOMノードの内容を書き換える
ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('root')
);

CodePen的原生中文解释:代码笔网

React组件

将返回React元素的函数称为React组件。

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

使用ES6的类进行编写方式

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

如果在JSX中存在用户定义的标签,那么该标签与同名的React组件将被调用。在这种情况下,props的内容将变为JSX标签内的属性。

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

const element = <Welcome name="Sara" />;
ReactDOM.render(
  element,
  document.getElementById('root')
);

CodePen 程序

可以从一个组件调用另一个组件。

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

function App() {
  return (
    <div>
      <Welcome name="Sara" />
      <Welcome name="Cahal" />
      <Welcome name="Edite" />
    </div>
  );
}

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

CodePen:
代码笔

如果UI中有经常使用的部件(例如按钮等)或复杂的部件(例如评论、动态等),将其作为一个组件进行分离是最佳实践。

只需要一种选项:盘点

注意事项:请勿修改组件中的props值。

function sum(a, b) {
  return a + b;
}

不可以

function withdraw(account, amount) {
  account.total -= amount;
}
广告
将在 10 秒后关闭
bannerAds