• react组件(1)


    定义组件

    function TitleComponent(props){
      return <h1>hello,{props.name}</h1>;
      
    }
    
    const TitleES6= props=><h1> hello,{props.name}</h1>
    
    class TitleClass extends React.Component{
     debugger render(){
    return <h1>hello,{this.props.name}</h1>; } } ReactDOM.render( <div> <TitleComponent name='通过function函数定义组件' /> <TitleES6 name=' 通过es6的箭头函数定义组件' /> <TitleClass name ="类定义组件"/> </div> , document.getElementById('root'))

    html:<div id="root"></div>

    React 内部实现了一套叫做React DOM的东西 也就是虚拟DOM.通过一个树状结构的JS对象来模拟DOM树。

    第一种函数定义组件,只需要定义一个接受props参数返回自定义的React元素即可

    第二种使用ES6的语法箭头简写

    第三种通过class定义一个组件,通过继承React.Component 实现,可以在debugger的位置处定义组件需要的变量等,最后通过render方法返回元素

    展示与容器组件 

    class CommentList extends React.Component{
      constructor(peops){
        super(peops)
      }
      renderComment({body,author}){
        return <li>{body}-{author}</li>
      }
      render(){
         return <ul> {this.props.comments.map(this.renderComment)} </ul>
      }
    }
    class CommentListContainer extends React.Component{
     //构造方法
     constructor(){
       super()
       //设置初始状态
        this.state = {
          comments: []
        }
      }
    
    componentDidMount(){ this.setState({comments:comments }) } render() { return <CommentList comments={this.state.comments} /> } } const comments = [{ body: 'React is great!', author: 'Facebook' }, { body: 'PHP is the programming language!', author: 'anonym' }] //渲染CommentListContainer组件给id为root的元素 ReactDOM.render(<CommentListContainer />, document.getElementById('root'))
    执行顺序
    CommentListContainer 组件容器先执行,constructor自身的构造函数并定义一个空的comments, 然后执行render并返回展示组件CommentList 元素。
    最后执行componentDidMount 进行数据加载,我们定义了一个comments 数组作为数据源。通过this.setState方法给comments赋值,同时触发重渲染
    CommentList 通过props接受父组件传递数据返回元素
    这样所有的界面结构都在展示组件中完成,所有的数据交互都在容器组件中完成,在团队开发中,就可以将页面与数据分别交于不同的人完成

    展示组件
    CommentList
      主要负责组件内容如何展示
      从props接收父组件传递来的数据
      大多数情况可以通过函数定义组件声明
    官方推荐将数据加载放到componentDidMount,与React组件的生命周期有关,组件挂载时有关的生命周期有以下几个,上面这些方法的调用是有次序由上往下:
    constructor()
    componentWillMount()
    render()
    componentDidMount()
    componentDidMount方法中的代码,是在组件已经完全挂载到网页上才会调用被执行,所以可以保证数据的加载。此外,在这方法中调用setState方法,会触发重渲染。
    容器组件CommentListContainer  
      主要关注组件的数据交互
      
    拥有自身的state,从服务器获取数据,或与redux等其他数据处理模块协作
      需要通过类定义组件声明,并包含生命周期函数和其他附加方法



     


  • 相关阅读:
    Java集合(二)-Set集合
    Java集合类
    Java构造器和初始化块
    学习OpenStack-Neutron网络服务
    Error response from daemon: Get https://index.docker.io/v1/search?q=tomcat&n=25: net/http: TLS handshake timeout
    学习OpenStack-Nova计算服务
    学习OpenStack-Glance组件部署
    报错:rsync同步报错
    报错:创建nginx镜像时出现报错
    报错:重启Docker报错如何解决
  • 原文地址:https://www.cnblogs.com/li-lun/p/7641304.html
Copyright © 2020-2023  润新知