Ken428965 2023-03-08 21:29 采纳率: 53.4%
浏览 20
已结题

react,页面数据没有按照所筛选的条件进行显示,租金条件为1000以下,但显示出的内容都是租金大于1000的?

在使用的react版本如下:

img

父组件代码:

import React, { useEffect, useState } from 'react'
function HouseList() {
// ...
  const [filters, setFilters]  = useState({})
  const searchHouseList = async (value) => {
    await API.get('/houses', {
      params: {
        cityId: value,
        ...filters,
        start: 1,
        end: 20
      }
    }).then(res => {
      console.log(filters)
// ...
    })
  }
  const onFilter = filters => {
    setFilters(filters)
  }
useEffect(() => {
  searchHouseList(value)
}, [filters])
// ...
return (
// ...
)
}
export default HouseList


子组件代码:

function Filter(props) {
// ...
  const onSave = (type, itemValue) => {
// ...
    const { area, mode, price, more } = newSelectedValues
    // 此处可以成功获取到四项筛选数据
    // console.log('区域',area)
    // console.log('方式',mode)
    // console.log('租金',price)
    // console.log('筛选',more)
    // 筛选条件数据
    const filters = {}
    // 以下代码就不能将获取到的四项筛选数据传给filters,暂时未找到原因何在
    // 区域
    const areaKey = area[0]
    let areaValue = 'null'
    if (area[3] && area[3] !=='null' ) {
      areaValue = area[3]
    } else if (area[2] && area[2] !=='null') {
      areaValue = area[2]
    } else if (area[1] && area[1] !=='null') {
      areaValue = area[1]
    }
    filters[areaKey] = areaValue
    // console.log('位置1',areaValue)
    // 方式和租金
    filters.mode = mode[0]
    // console.log('位置2',mode[0])
    filters.price = price[0]
    // console.log('位置3',price[0])
    // 更多筛选条件 more
    filters.more = more.join(',')
    // console.log('位置4',more.join(','))
    // 调用父组件中的方法,来将筛选数据传递给父组件
    props.onFilter(filters)
    // console.log('位置5',filters)
    // console.log('位置6',props.onFilter(filters))
// ...
}
}


目前效果如下:
点击标题栏弹出相应的Picker模块,选择Picker模块里的其中一项后点击确定(例如点击租金项里的”1000以下“这个选项):

img

img

选择“1000以下”,显示出的内容有部分租金在1000以下,也有部分租金在1000以上,即没有按照筛选条件进行筛选和显示:

img

位置3的打印结果:

img

试过把位置3里的price[0]改为price[1]或price[2]或price[3],其打印结果都为undifined,只有price[0]才能打印出值

已排除数据库里的数据出错的情况,较大可能是前端代码存在写得不恰当的地方
请问代码有哪些地方写得不对?
如何修改才能实现按条件筛选条件筛选并显示出正确的数据?
请在现有代码的基础上展示代码举例说明,谢谢

  • 写回答

1条回答 默认 最新

  • 夜郎king 2022博客之星IT其它领域TOP 12 2023-03-09 08:00
    关注

    前后台结合起来看,
    1、首先确认从前端传到后端的值和条件比较符是对,比如将大于1000传到了后台
    2、从后台返回的数据中搜索,如果1没有错,找后台的接口同学对一下,大概率是后台的给的数据错了。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月15日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
  • ¥15 matlab自定义损失函数
  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图