Javascript 为什么';过滤时我的平面列表不能再次渲染我的组件吗?
我有一个平面列表,顶部有一个搜索组件:Javascript 为什么';过滤时我的平面列表不能再次渲染我的组件吗?,javascript,filter,react-hooks,react-native-flatlist,Javascript,Filter,React Hooks,React Native Flatlist,我有一个平面列表,顶部有一个搜索组件: searchFilterFunction(文本)} 自动更正={false} 值={term} containerStyle={{backgroundColor:'transparent'}} 样式={{borderWidth:0} /> lot.id.toString()} renderItem={({item:lot})=>{ const collectDate=新日期(lot.collectDateInMili); const age=differ
searchFilterFunction(文本)}
自动更正={false}
值={term}
containerStyle={{backgroundColor:'transparent'}}
样式={{borderWidth:0}
/>
lot.id.toString()}
renderItem={({item:lot})=>{
const collectDate=新日期(lot.collectDateInMili);
const age=differenceDays(new Date(),collectDate)+1;
返回(
);
}}
/>
当用户在搜索框中键入时,此平面列表调用函数searchFilterFunction:
函数搜索过滤器函数(文本:字符串){
setTerm(文本);
const textData=text.toLowerCase();
const newData=lots.data.filter(项=>{
const collectDate=新日期(item.collectDateInMili);
const age=differenceDays(new Date(),collectDate)+1;
const itemData=`${item.name.toLowerCase()}${item.balance
.toString()
.toLowerCase()}${age.toString().toLowerCase()}`;
返回itemData.indexOf(textData)>-1;
});
log('searchFilterFunction->textData',textData);
log('searchFilterFunction->newData',newData);
SetLotsResult(新数据);
}
用于搜索此函数数据的批状态是my component的原始不变状态。
我将结果传递给lotsResult,并将其呈现在平面列表中。
但是,当搜索一个术语时:28798我创建了一个console.log,我的函数返回值数组,但它不会呈现在平面列表中
Console.log返回:
{
"message": "searchFilterFunction -> newData",
"args": [
[
{
"id": 3,
"originUserId": 1,
"name": "28798-GENIVAL ALVES 01 (G-1,2)",
"balance": 2375,
"aviaries": [
{
"id": 2,
"batchId": 1,
"name": "AV02",
"capacity": 45000
},
{
"id": 3,
"batchId": 1,
"name": "AV03",
"capacity": 1500
}
],
"late": true,
"batchDateInMili": 1596596400000,
"collectDateInMili": 1596596400000
},
{
"id": 2,
"originUserId": 1,
"name": "28798-GENIVAL TERTO ALVES 01 (G-1,2)",
"balance": 65000,
"aviaries": [
{
"id": 1,
"batchId": 1,
"name": "AV01",
"capacity": 65000
}
],
"late": true,
"batchDateInMili": 1596769200000,
"collectDateInMili": 1596769200000
}
]
]
}
在我看来,你没有正确地调用你的设置状态钩子。它的定义(根据您的注释)为
setLotsResult
。但是,在代码中,似乎正在调用SetLotsResult(newData)
注意资本化的差异。它们应该匹配。我验证了,当供给平面列表的数据发生变化时,我的组件没有固定高度的特征。我通过定义最小高度解决了这个问题。请向我们展示您的状态声明和此函数:`SetLotsResult(newData)`
const[lotsResult,setLotsResult]=useState([])
令人惊讶的是,在我的代码中,函数的首字母大写字母相同。所以错误并不存在。@Splitter这是一个非常好的案例,可以发布一个最小的可重复的问题示例。首先我应该提出这个建议。