美文网首页
react婴儿_notes

react婴儿_notes

作者: stanf1l | 来源:发表于2017-12-21 13:22 被阅读0次

视频地址: https://haoqicat.com/react-baby/1-react-show
第二版:https://haoqicat.com/react-baby-v2
其他教程:http://www.ruanyifeng.com/blog/2015/03/react.html

  1. react 是用来写UI的前端JS库

  2. 组件化:

  • 独立完成任务
  • 组件要足够小
  • 不按技术类型分离,而要按功能模块分离
  • 对外接口要明晰
  • 高内聚:完成一个功能的代码尽量放到一个文件中
  • 低耦合:我们的正常运行不依赖于其他组件
  1. Bable is a JavaScript compiler
    (ES6, JSX)

  2. 外来数据要流入 React 组件内部,props 属性就是入口。

  3. 由于箭头函数中this的特殊性,所以在React.creatClass()中不要使用箭头函数

  4. React组件生命周期


    React组件生命周期.png
  5. JSX 允许直接在模板插入 JavaScript 变量。如果这个变量是一个数组,则会展开这个数组的所有成员。

  6. 添加组件属性,有一个地方需要注意,就是 class 属性需要写成 className ,for 属性需要写成 htmlFor ,这是因为 class 和 for 是 JavaScript 的保留字。

  7. this.props.children 的值有三种可能:如果当前组件没有子节点,它就是undefined;如果有一个子节点,数据类型是object;如果有多个子节点,数据类型就是array。所以,处理this.props.children的时候要小心。React 提供一个工具方法React.Children来处理this.props.children。我们可以用React.Children.map来遍历子节点,而不用担心this.props.children的数据类型是undefined还是object

  8. 组件类的PropTypes属性,就是用来验证组件实例的属性是否符合要求

  9. getDefaultProps & getInitialState
    由于 this.props 和 this.state 都用于描述组件的特性,可能会产生混淆。一个简单的区分方法是,this.props 表示那些一旦定义,就不再改变的特性,而 this.state 是会随着用户互动而产生变化的特性。

  10. 获取真实的DOM节点
    组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM)。只有当它插入文档以后,才会变成真实的 DOM 。根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做DOM diff,它可以极大提高网页的性能表现。但是,有时需要从组件获取真实 DOM 的节点,这时就要用到ref属性


var MyComponent = React.createClass({
  handleClick: function() {
    this.refs.myTextInput.focus();
  },
  render: function() {
    return (
      <div>
        <input type="text" ref="myTextInput" />
        <input type="button" value="Focus the text input" onClick={this.handleClick} />
      </div>
    );
  }
});

ReactDOM.render(
  <MyComponent />,
  document.getElementById('example')
);

上面代码中,组件MyComponent的子节点有一个文本输入框,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 是拿不到用户输入的。为了做到这一点,文本输入框必须有一个ref属性,然后this.refs.[refName]就会返回这个真实的 DOM 节点。需要注意的是,由于this.refs.[refName]属性获取的是真实 DOM ,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。上面代码中,通过为组件指定Click事件的回调函数,确保了只有等到真实 DOM 发生Click事件之后,才会读取this.refs.[refName]属性。React 组件支持很多事件,除了Click事件以外,还有KeyDownCopyScroll等,完整的事件清单请查看官方文档

  1. 表单
    用户在表单填入的内容,属于用户跟组件的互动,所以不能用this.props读取

var Input = React.createClass({
  getInitialState: function() {
    return {value: 'Hello!'};
  },
  handleChange: function(event) {
    this.setState({value: event.target.value});
  },
  render: function () {
    var value = this.state.value;
    return (
      <div>
        <input type="text" value={value} onChange={this.handleChange} />
        <p>{value}</p>
      </div>
    );
  }
});

ReactDOM.render(<Input/>, document.body);

上面代码中,文本输入框的值,不能用this.props.value读取,而要定义一个onChange事件的回调函数,通过event.target.value读取用户输入的值。textarea元素、select元素、radio元素都属于这种情况,更多介绍请参考官方文档

相关文章

  • react婴儿_notes

    视频地址: https://haoqicat.com/react-baby/1-react-show第二版:htt...

  • React Study Notes

    This is the React study notes I made when I started to le...

  • React Notes

    When using a pure component, pay special attention to arr...

  • React Notes

    General: github.com/stephengriderproject link: https://gi...

  • 从代码实践潜入react内部,深入diff

    原文: Implementation Notes原译文: react的实现记录 本节是 stack reconci...

  • Notes On React - Three

    事件处理   React 中事件绑定属性的命名采用驼峰命名,且采用了 JSX 语法的时候需要传递一个函数作为时间处...

  • Notes On React - One

    安装   React依赖于react、react-dom这两个包。生成React项目可以通过包管理工具(如npm)...

  • Notes On React - Four

    Refs   在一般情况下,props 是父组件与子组件交互的唯一方式-传入新的 props 来重新渲染子组件。 ...

  • Notes On React - Two

    React 的生命周期   React组件 的生命周期大致可分成四个状态:  - Mounting:装配-组件实例...

  • react bug notes

    Objects are not valid as a React child (found: object wit...

网友评论

      本文标题:react婴儿_notes

      本文链接:https://www.haomeiwen.com/subject/pekwwxtx.html