猫眼电影H5app代码解决报错
时间:2023-8-24 00:35 作者:小锐 分类: React
在react项目中
data是一个对象
这个对象在放映厅排片信息列表要用到,就是遍历对象时用到
data: {
9-9: (6) [{…}, {…}, {…}, {…}, {…}, {…}]
9-10: (6) [{…}, {…}, {…}, {…}, {…}, {…}]
9-11: (6) [{…}, {…}, {…}, {…}, {…}, {…}]
9-12: (6) [{…}, {…}, {…}, {…}, {…}, {…}]
}
代码
let [sum, setSum] = useState(0) //点击激活样式的赋值,相同为真就激活
let [moviedom, setMoviedom] = useState([]) //列表
let [indexings, setIndexings] = useState([]) //图片
let [project, setProject] = useState([]) //放映厅排片信息列表
var dic = 0
// 初始化渲染轮播图
useEffect(() => {
$_celimainfo({ cid: param1 }).then(res => {
setIndexings(res.data.data)
setMoviedom(res.data.data[0])
dic = res.data.data[0].id
picture(dic) //初始化排片信息列表
})
}, [])
//1.封装请求
let picture = (num) => {
$_celimamov({ cid: param1, mid: num }).then(res => {
setProject(res.data.data)
})
}
// 2.轮播图切换
let interchange = (index) => {
indexings.map((v, i) => { //遍历图片列表中,判断当前变化的index和遍历中的下标是否相同,相同就赋值给setMoviedom
// 在此处调用 interchange 函数,并传入需要的参数
if (index === i) {
picture(v.id) //7.放映厅排片信息 开始时间+结束时间+2D 3D
return setMoviedom(v) //返回的影片性情,剧名+评分
}
})
}
// 3.点击日期,激活样式
let setdate = (num) => {
setSum(num)
}
//--------------------------------------------------------------------------------------
return(
//日期标签
<div className='schedule-date'>
{Object.keys(project).length > 0 ? ( // 做判断,如果这个对象为空的话就返回<div>Loading...</div>
Object.keys(project).map((v, i) => (
//style={{ backgroundColor: i === sum ? '#f20e33' : '#fff' }}//激活样式
<div className='schedule-date-day' key={i} style={{ backgroundColor: i === sum ? '#f20e33' : '#fff' }} onClick={() => setdate(i)} >
// {i === 0 && <span>今天</span>} 是根据下标判断,服务器返回多少数据,在动态渲染今天,明天......
{i === 0 && <span>今天</span>}
{i === 1 && <span>明天</span>}
{i === 2 && <span>后天</span>}
{i === 3 && <span>外天</span>}
{i === 4 && <span>大外天</span>}
{i === 5 && <span>大大外天天</span>}
{i === 6 && <span>即今天</span>}
{i === 7 && <span>即明天</span>}
<p>{v}</p>
</div>
))
) : (
<div>Loading...</div>
)}
</div>
//场次+开始结束时间列表
<div className='schedule-session'>
{/* 没有做判断前,刚进来的数据为空,来用map遍历时会报错,所以要先判断一下 */}
{/* { project[Object.keys(project)[sum]] && project[Object.keys(project)[sum]] */}
{/* Uncaught TypeError: Cannot read properties of undefined (reading 'map') */}
{ project[Object.keys(project)[sum]] && project[Object.keys(project)[sum]].map(item => {
return (
<div className='schedule-session-info' key={item.id}>
<div className='session-empty' >
{/* 渲染对象数据 */}
<h3>{item.endtime}</h3>
<p>{item.starttime}散场</p>
</div>
<div className='session-emptyv'>
<p>{item.name}</p>
<p>{item.type}</p>
</div>
<h4>¥{item.price}</h4>
<div className='session-emptor'>
<div>购票</div>
</div>
</div>
)
})}
</div>
)
标签: Object.keys map