在使用的react版本如下:
function HouseList() {
// ...
useEffect(() => {
async function fetchData() {
const { label, value } = await getCurrentCity()
setLabel(label)
setValue(value)
searchHouseList(value)
}
fetchData()
},[])
// ...
// 用来获取房屋列表数据
const searchHouseList = (value) => {
API.get('/houses', {
params: {
cityId: value,
...filters,
start: 1,
end: 20
}
}).then(res=>{
// ...
})
}
// 接收 子组件Filter 中的筛选条件数据
const onFilter = filters => {
// 返回页面顶部
window.scrollTo(0, 0)
setFilters(filters)
// 调用获取房屋数据的方法
searchHouseList(value)
}
}
子组件Filter:
function Filter(props) {
// ...
// 确定按钮(隐藏对话框)
const onSave = (type, value) => {
// ...
// 调用父组件HouseList中的方法,来将筛选数据传递给父组件HouseList
props.onFilter(filters)
// ...
}
请问如何将子组件Filter里筛选出来的数据,传递到父组件HouseList里的searchHouseList函数里?正确的代码是什么?恳请展示代码进行举例说明
value你已经用变量存起来了,所以不用通过方法传进去,直接取就可以了, 方法里传个filters就可以了
function HouseList() {
// ...
useEffect(() => {
async function fetchData() {
const { label, value } = await getCurrentCity()
setLabel(label)
setValue(value)
searchHouseList()
}
fetchData()
},[])
// ...
// 用来获取房屋列表数据
const searchHouseList = (filters={}) => {
API.get('/houses', {
params: {
cityId: value,
...filters,
start: 1,
end: 20
}
}).then(res=>{
// ...
})
}
// 接收 子组件Filter 中的筛选条件数据
const onFilter = filters => {
// 返回页面顶部
window.scrollTo(0, 0)
setFilters(filters)
// 调用获取房屋数据的方法
searchHouseList(value)
}
}
可以看一下,React父子组件传参,大体就是把父组件的函数当做属性传递给子组件,然后子组件手动调用