React基础知识及示例(三)

React组件嵌套

react的嵌套不像vue那样会有全局和局部之分

react的嵌套关系就是谁在外边谁就是父组件(爸爸组件)

结合例子:

<body>
  <div id="app">

  </div>
<script type="text/babel">
let Component = React.createClass({
  render(){
    return(
      <div className='test1'> 
        这是组件1
  
      </div>
    )
  }
})

//创建组件二
let Son = React.createClass({
  render(){
    return (
      <div className='test2'>
        这里是组件二
        <Component></Component>
      </div>
    )
  }
})

ReactDOM.render(<Son/>,document.getElementById('app'))
</script>
</body>

slot插槽

和vue中一样

组件标签中存放的内容默认不会被渲染 而且react中没有slot

组件对象下 props.children可以用来获取组件标签中的内容

举例:

<script type="text/babel">
let Component = React.createClass({
  render(){
    return(
      <div className='test1'> 
        这是组件1
        <Son>
          BIGBANG---BANG BANG BANG</Son>
      </div>
    )
  }
})

//创建组件二
let Son = React.createClass({
  render(){
    console.log(this)
    return (
      <div className='test2'>
        这里是组件二
        <h1>{this.props.children}</h1>
      </div>
    )
  }
})

ReactDOM.render(<Component/>,document.getElementById('app'))
</script>

ref

可以绑定dom 也可以绑定组件
通过组件对象下的 refs进行获取

第一种方法,通过ref绑定dom

结合例子:

<body>
  <div id="app">

  </div>
<script type="text/babel">
let Component = React.createClass({
  render(){
    return(
      <div className='test1'> 
        这是组件1
        <Son>
          
        </Son>
      </div>
    )
  }
})

//创建组件二
let Son = React.createClass({
  render(){
    return (
      <div className='test2'>
        这里是组件二
        <h1 ref='hehe'>不经历风雨,怎能见彩虹</h1>
        <button onClick={()=>{
          console.log(this.refs.hehe)
        }}>点击</button>
      </div>
    )
  }
})
/*
ref 可以用来绑定元素 
通过组件对象下的 this.refs 进行获取
*/ 
ReactDOM.render(<Component/>,document.getElementById('app'))
</script>
</body>

第二种方法,通过ref绑定component

结合例子:

<body>
  <div id="app">

  </div>
<script type="text/babel">
let Component = React.createClass({
  render(){
    return(
      <div className='test1'> 
        这是组件1
        <button onClick={()=>{
          console.log(this)
          this.refs.son.sayHello()
        }}>点击</button>
        <hr/>
        <Son ref='son'></Son>
      </div>
    )
  }
})

//创建组件二
let Son = React.createClass({
  sayHello(){
    alert('你好')
  },
  render(){
    return (
      <div className='test2'>
        这里是组件二
      </div>
    )
  }
})
/*
ref除了可以绑定dom之外 还可以绑定组件 
绑定之后可以获取到绑定组件的一切  方法
可以实现在父组件中调用子组件的方法
*/ 
ReactDOM.render(<Component/>,document.getElementById('app'))
</script>
</body>

react组件通信

  • 父子通信 props refs
  • 子父通信 props
  • 亲兄弟通信 状态提升
  • 远亲通信 全局状态管理 redux
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值