当前位置:网站首页>组件间通信
组件间通信
2022-08-11 05:17:00 【-加油】
1、父组件向子组件传数据
react:
import React from "react"
//子组件 类组件
class SonC extends React.Component {
render () {
return (
//类必须通过this关键字获取,且props是固定的
<div>类组件接受父组件传来的数据:{
this.props.msg}</div>
)
}
}
//子组件 函数式组件
function SonF (props) {
return (
<div>函数式组件接受父组件传来的数据:{
props.msg}</div>
)
}
//父组件
class App extends React.Component {
state = {
message: 'hello son,快叫爸爸'
}
render () {
return (
<div>
<SonC msg={
this.state.message}></SonC>
<SonF msg={
this.state.message}></SonF>
</div>
)
}
}
export default App
vue:
<template>
<div id="app">
<son-vue :msg="message"></son-vue>
</div>
</template>
<script>
import SonVue from './Son.vue'
export default {
components: {
SonVue
},
data () {
return {
message: 'hello son,快叫爸爸'
}
}
}
</script>
<template>
<div>接受父组件传来的数据:{
{
msg }}</div>
</template>
<script>
export default {
props: ['msg']
}
</script>
2、子组件向父组件传数据
react
还没解决好
import React from "react"
//子组件 类组件
class SonC extends React.Component {
state = {
soncount: 0
}
add = () => {
this.setState({
soncount: this.state.soncount + 1
})
//这里还没解决好值得问题 传过去的值是旧的
this.props.getSon(this.state.soncount)
}
render () {
return (
<div><p>子组件的count值:{
this.state.soncount}</p><button onClick={
this.add}>点击+1</button></div>
)
}
}
//父组件
class App extends React.Component {
state = {
dadcount: 0,
}
getSonMsg = (sonMsg) => {
console.log(sonMsg)
this.setState({
dadcount: sonMsg
})
}
render () {
return (
<div>
<SonC getSon={
this.getSonMsg}></SonC>
<p>父组件dadcount的值是由子组件传来的:{
this.state.dadcount}</p>
</div>
)
}
}
export default App
vue:
<template>
<div id="app">
<Son @getSon="getSonMsg"></Son>
<p>父组件dadcount的值是由子组件传来的:{
{
dadcount }}</p>
</div>
</template>
<script>
import Son from './Son.vue'
export default {
components: {
Son
},
data () {
return {
dadcount: 0
}
},
methods: {
getSonMsg (val) {
this.dadcount = val
}
}
}
</script>
<template>
<div><p>子组件的soncount值:{
{
soncount}}</p><button @click="add">点击+1</button></div>
</template>
<script>
export default {
data () {
return {
soncount: 0
}
},
methods: {
add () {
this.soncount++
this.$emit('getSon', this.soncount)
}
}
}
</script>
3、兄弟之间传值
react:
import React from "react"
//子A接收父的数据
function SonA(props){
return(
<div>this is A 接受到的数据是:{
props.sendA}</div>
)
}
//子B传数据给父
function SonB(props){
const bMsg = '这是B的数据'
return(
<div>this is B <button onClick={
()=>props.getB(bMsg)}>B发送数据</button></div>
)
}
//父组件
class App extends React.Component {
state = {
sendAMsg : ''
}
getBMsg = (msg) =>{
console.log(msg);
this.setState({
sendAMsg:msg
})
}
render () {
return (
<div>
<SonA sendA={
this.state.sendAMsg}></SonA>
<SonB getB={
this.getBMsg}></SonB>
</div>
)
}
}
export default App
4、跨组件通信Context
react:
import React, {
createContext } from 'react'
const {
Provider, Consumer } = createContext()
function ComA () {
return (
<div>comA 套着B:
<ComB></ComB>
</div>
)
}
function ComB () {
return (
<div>
这是最后一层comB。
{
/* 通过Consumer使用数据 */}
<Consumer>{
value => <span> 显示出:{
value} </span>}</Consumer>
</div>
)
}
class App extends React.Component {
state = {
message: 'this is App的state数据'
}
render () {
return (
<div>
App套着comA:
<Provider value={
this.state.message}>
<ComA></ComA>
</Provider>
</div>
)
}
}
export default App
边栏推荐
猜你喜欢
随机推荐
【记录】没用知识点 - 智力题
吃瓜教程task02 第3章 线性模型
RK3399上的Tengine实践笔记
c 指针学习(1)
QT Mat转HObject和HObject转Mat 图像视觉处理
C语言——文件操作(2)文件的读写操作
软件测试风险识别
Flask框架学习:模板渲染与Get,Post请求
[Verilog] I2S Master Test Bench
【记录】TypeScript
【记录】innerHeight?clientHeight?offsetHeight?scrollTop?screenTop?.....一堆高度傻傻分不清
第10章 对象和类-2
第8章 函数探幽 -1
vftpd本地可以连接,远程连接超时的解决
【win10+cuda7.5+cudnn6.0安装caffe①】安装cuda和cudnn
task06 PyTorch生态
开炮,开炮
(三)性能实时监控平台搭建(Grafana+Prometheus+Node_explorer+Jmeter)
【win10+cuda7.5+cudnn6.0安装caffe③】编译及测试caffe
C语言结构体详解 (2) 结构体内存对齐,默认对齐数









