03_组件之间的嵌套

App.jsx

import React, { Component } from 'react'
import Foot from './cpns/Foot'
import Header from './cpns/Header'
import Main from './cpns/Main'


class App extends Component {
  render() {
    return (
      <div>
        <Header/>
        <Main/>
        <Foot/>
      </div>
    )
  }
}

export default App

main.jsx

import React, { Component } from 'react'
import MainBanner from './MainBanner'
import MainProductList from './MainProductList'

 class Main extends Component {
  render() {
    return (
      <div>
        <div>Main</div>
        <MainBanner/>
        <MainProductList/>
      </div>
    )
  }
}

export default Main


//-----------MainBanner.jsx------------
import React, { Component } from 'react'

 class MainBanner extends Component {
  render() {
    return (
      <div>
        <p>MainBanner轮播图</p>
      </div>
    )
  }
}

export default MainBanner


//------------MainProductList --------------------
import React, { Component } from 'react'

 class MainProductList extends Component {
  render() {
    return (
      <div>
        <ul>
            <li>MainProductList1</li>
            <li>MainProductList2</li>
            <li>MainProductList3</li>
            <li>MainProductList4</li>
        </ul>
      </div>
    )
  }
}

export default MainProductList

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Vue组件多层嵌套时,可以使用props和$emit来实现父子组件之间的值传递。 具体实现方法如下: 1. 在父组件中使用props将数据传递给子组件,在子组件中使用this.$props获取父组件传递的数据。 2. 在子组件中使用$emit将数据传递给父组件,在父组件中使用@eventName监听子组件的事件,并进行相应的处理。 3. 如果有多层嵌套,可以使用provide和inject来实现祖先组件向后代组件传递数据。 示例代码如下: 父组件: ``` <template> <div> <child :msg="msg" @childEvent="handleChildEvent"></child> </div> </template> <script> import Child from './Child.vue'; export default { name: 'Parent', components: { Child }, data() { return { msg: 'hello world' } }, methods: { handleChildEvent(data) { console.log(data); } } } </script> ``` 子组件: ``` <template> <div> <p>{{ $props.msg }}</p> <button @click="handleClick">send message to parent</button> </div> </template> <script> export default { name: 'Child', methods: { handleClick() { this.$emit('childEvent', 'hello parent'); } } } </script> ``` 祖先组件: ``` <template> <div> <grandchild></grandchild> </div> </template> <script> import Grandchild from './Grandchild.vue'; export default { name: 'Ancestor', components: { Grandchild }, provide() { return { message: 'hello world' } } } </script> ``` 后代组件: ``` <template> <div> <p>{{ message }}</p> </div> </template> <script> export default { name: 'Grandchild', inject: ['message'] } </script> ``` 需要注意的是,props是单向数据流,即父组件传递给子组件的数据只能在子组件中被读取,而不能被修改。如果需要修改父组件中的数据,需要使用$emit来触发一个事件,然后在父组件中监听该事件并进行相应的处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值