React - 状态提升
C memory layout

React - 组合 vs 继承

violet posted @ Jul 18, 2020 08:57:16 AM in 读书笔记 with tags React , 10790 阅读

React 有十分强大的组合模式。我们推荐使用组合而非继承来实现组件间的代码重用。

Props 和组合为你提供了清晰而安全地定制组件外观和行为的灵活方式。注意:组件可以接受任意 props,包括基本数据类型,React 元素以及函数。

如果你想要在组件间复用非 UI 的功能,我们建议将其提取为一个单独的 JavaScript 模块,如函数、对象或者类。组件可以直接引入(import)而无需通过 extend 继承它们。

 

function FancyBorder(props) {
  return (
    <div className={'FancyBorder FancyBorder-' + props.color}>
      {props.children}
    </div>
  );
}

function Dialog(props) {
  return (
    <FancyBorder color="blue">
      <h1 className="Dialog-title">
        {props.title}
      </h1>
      <p className="Dialog-message">
        {props.message}
      </p>
      {props.children}
    </FancyBorder>
  );
}

class SignUpDialog extends React.Component {
  constructor(props) {
    super(props);
    this.handleChange = this.handleChange.bind(this);
    this.handleSignUp = this.handleSignUp.bind(this);
    this.state = {login: ''};
  }

  render() {
    return (
      <Dialog title="Mars Exploration Program"
              message="How should we refer to you?">
        <input value={this.state.login}
               onChange={this.handleChange} />
        <button onClick={this.handleSignUp}>
          Sign Me Up!
        </button>
      </Dialog>
    );
  }

  handleChange(e) {
    this.setState({login: e.target.value});
  }

  handleSignUp() {
    alert(`Welcome aboard, ${this.state.login}!`);
  }
}

ReactDOM.render(
  <SignUpDialog />,
  document.getElementById('root')
);
  • 无匹配
Chennai Escorts 说:
Sep 08, 2021 02:56:54 PM

Do you want to learn some new tricks of magic?
<a href="https://escortservicesindifferentplace.weebly.com/my-work.html">Chennai Escorts </a>
<a href="https://lucknowcallgirldivyanka.hatenablog.com/entry/2021/09/02/185054?_ga=2.256848395.1858775967.1630575313-1424768999.1630575313">Chennai Escort </a>
<a href="https://ext-5523356.livejournal.com/2472.html">Escorts in Chennai </a>
<a href="https://www.evernote.com/shard/s497/client/snv?noteGuid=bbfa3d02-8735-d8ec-d1d8-4bac5cd75b66&noteKey=e3943d3ffdf038af6a3f7d8e61ee8dd3&sn=https%3A%2F%2Fwww.evernote.com%2Fshard%2Fs497%2Fsh%2Fbbfa3d02-8735-d8ec-d1d8-4bac5cd75b66%2Fe3943d3ffdf038af6a3f7d8e61ee8dd3&title=Chennai%2BEscorts"> Chennai Escort Service </a>

Chennai Escorts 说:
Sep 08, 2021 02:57:42 PM

[link:http://www.google.com]your link text[/link]
[link="http://www.google.com"]google[/link]
[url=http://www.google.com]google[/url]
<a href="https://www.google.com">google</a>
[google][http://www.google.com|google ]
[http://www.google.com google ]
[a=http://www.google.com] google[/a]
[google|http://www.google.com]
"google":www.google.com
[google](http://www.google.com/)
[http://www.google.com|google]
[Lighthouse](http://lighthouseapp.com/ "Lighthouse")
Google
[google->http://www.google.com/]


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter