React 属性于事件

React.js入门基础与案例开发 by ParryKK in imooc.com 学习笔记

React state 属性

  • state 对于模块属于自身属性

  • state 的作用域只属于当前类,不污染其它模块

  • state 初始化

    constructor() {
      super(); // 调用基类的所有初始化方法
      this.state = {
        username : "Parry",
        age : 20
      };    // 初始化赋值
    }
    
  • state 变量调用

    {this.state.username} {this.state.age}

  • state 变量更改

    this.setState({username: "IMOOC"});
    

React props 属性

  • 模块的外来属性

  • props 对于模块属于外来属性

  • props 传递

    // Parent.js
    
    
  • props 接收

    // Child.js
    

    {this.props.userid} {this.props.username}

  • props 验证

    Prop Types 说明

    验证 Parent 传来的数据类型, 如果类型不对, console 会警告

    // Child.js
    Child.propTypes = {
      userid : React.PropTypes.number,
    }
    

    强制 Parent 必须传入 userid ,否则, console 会警告

    // Child.js
    Child.propTypes = {
      userid : React.PropTypes.number.isRequired
    }
    

    定义 props 默认值

    const defaultProps = {
        userid : 123
    }
    Child.defaultProps = defaultProps;
    Child.propTypes = {
      userid : React.PropTypes.number
    }
    
  • 传递所有 props 参数

    
    

React 事件和数据双向绑定

  • 事件绑定

    // Parent.js
    var React = require('React')
    // 外部组件必须 export 才能被加载
    export default class Parent extends React. Component {
      constructor() {
        super(); // 调用基类的所有初始化方法
        this.state = {
          username : "Parry",
          age : 20
        };    // 初始化赋值
      }
      changeUserInfo(age) {
        this.setState({
          age : age
        });
      }
      render() {
        

    username: {this.state.username}

    age: {this.state.age}

    } }
  • Child 传参数到 Parent

    // Parent.js
    var React = require('React')
    import Child = "./Child"
    // 外部组件必须 export 才能被加载
    export default class Parent extends React. Component {
      constructor() {
        super(); // 调用基类的所有初始化方法
        this.state = {
          username : "Parry",
          age : 20
        };    // 初始化赋值
      }
      changeUserInfo(event) {
        this.setState({
          age : event.target.value
        });
      }
      render() {
        

    username: {this.state.username}

    age: {this.state.age}

    } }
    // Child.js
    var React = require('React')
    
    // 外部组件必须 export 才能被加载
    export default class Child extends React. Component {
      render() {
        

    子页面输入:

    } }

React 组件的 Refs

  • 获取 html 节点进行操作

  • 第一种方式 (html 原生方法)

    changeUserInfo(age) {
      var mySubmitBotton = document.getElementById('submitButton');
      ReactDom.findDOMNode(mySubmitBotton).style.color = 'red';
    }
    render() {
      
    }
  • 第二种方式 (refs 方法)

    changeUserInfo(age) {
      this.refs.submitButton.style.color = 'red';
    }
    render() {
      
    }
  • Refs 是访问到组件内部 DOM 节点唯一可靠的方法

  • Refs 会自动销毁对子组件的引用

  • 不要在 renderrender 之前对 Refs 进行调用, 因为组件还没加载好, 在 componentDidMount() 后调用

  • 不要滥用 Refs

React 独立组件间共享 Mixin

  • 组件间,事件共享

  • 公共函数在不同的组件里调用

  • 可以做组件属性或者生命周期的事件

  • ES6 不支持,可以运用插件使用 Mixin

    sudo npm install --save react-mixin@2
    
    // mixins.js
    const MixinLog = {
      log() {
        console.log("hihi");
      }
    }
    export default MixinLog
    
    // Component.js
    import ReactMixin from 'react-mixin';
    import MixingLog from './mixins';
    export default class Component extends React.Component {
      changeUserInfo() {
        MixinLog.log();
      }
      render() {
        
    } } ReactMixin(Component.prototype, MixinLog);

你可能感兴趣的:(React 属性于事件)