1.创建一个bus.js 用来放订阅者和发布者的方法
export let bus = {
list: [], // 为了存储订阅者的回调函数
// 订阅者
subscribe(callback) {
this.list.push(callback)
},
// 发布者
publish(params) {
this.list.forEach(callback => {
callback && callback(params)
})
}
}
2. 在一个B组件里面先进行订阅
点击查看详细代码
import React, { Component } from 'react'
import { bus } from '../bus'
export default class filmDetail extends Component {
constructor() {
super()
this.state = {
content: ''
}
bus.subscribe(text => {
// text 是发布者传的参数,可以在当前组件使用
this.setState({
content:text
})
})
}
render() {
return <div style={{marginTop:'20px'}}>{this.state.content}</div>
}
}
3. 在一个A组件里面再进行发布
点击查看详细代码
import React from 'react'
import FilmItem from '../components/filmItem.js'
import FilmDetail from '../components/filmDetail'
import { bus } from '../bus'
class APP extends React.Component {
// 脑子听懂了,但是手不会
changeLikeOne(params) {
console.log('选中的一项', params)
}
dataList = [
{
filmName: '假如爱有天意',
fileId: 12,
grate: 9.6,
filmDetail: `2003年的大学生梓希(孙艺珍饰)一天收拾房间,无意中发现一个神秘的箱子,里面满载着母亲珠喜(孙艺珍饰)留下的情书,在阅读中她重温着母亲的初恋回忆。1968年的珠喜,是一个清纯可爱的少女,与穷学生俊河(曹承佑饰)一见钟情,由于珠喜显赫的家世,令两人的恋爱陷入俗套的门不当户不对的痛苦纠结中。2003年的梓希爱情同样坎坷,她暗恋着戏剧学会的尚民(赵寅成饰),却一直难以表白自己的爱意。
而巧妙的是,梓希发觉母亲的初恋故事跟她自己遭遇十分相似。自己能得到幸福吗?还是如母亲一般曲折难求?`
},
{
filmName: '山河恋人',
fileId: 16,
grate: 3.9,
filmDetail: `山河依旧,波涛汹涌,故人难回首。这世间大江大河的涌动总比人的别离多了几份稳定与萧索。山是那个山,河水流淌是那个河,只是在山河间生存的人们的变化却没了寻常的规。`
}
]
render() {
return (
<div>
<FilmItem></FilmItem>
{this.dataList.map(item => (
<FilmItem
key={item.fileId}
{...item}
onEvent={value => {
bus.publish(value)
}}
></FilmItem>
))}
<FilmDetail></FilmDetail>
</div>
)
}
}
export default APP
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现