Javascript 第一次单击未呈现正确的数据[第二次单击有效]?
我这里有一个菜单,是用水平平面列表制作的: 菜单代码:Javascript 第一次单击未呈现正确的数据[第二次单击有效]?,javascript,react-native,google-cloud-functions,expo,Javascript,React Native,Google Cloud Functions,Expo,我这里有一个菜单,是用水平平面列表制作的: 菜单代码: <View style={{ position: 'absolute', left: 0, top: 0 }}> <FlatList horizontal data={categories} extraData={ selectedCategory // for single item } style={styles.flatList}
<View style={{ position: 'absolute', left: 0, top: 0 }}>
<FlatList
horizontal
data={categories}
extraData={
selectedCategory // for single item
}
style={styles.flatList}
renderItem={({ item: rowData }) => (
<TouchableOpacity
onPress={() => recalculateCategory(rowData)}
style={rowData === selectedCategory ? styles.selected : styles.unselected}
>
<Text style={{ fontWeight: 'bold', color: '#FFFFFF', padding: 6 }}>
{ rowData }
</Text>
</TouchableOpacity>
)}
keyExtractor={(item, index) => item.toString()}
/>
</View>
getCollection的代码:
const getCollection = async() => {
setIsLoading(true);
const index = 1;
const getThoughtsOneCategory = Firebase.functions().httpsCallable('getThoughtsOneCategory');
await getThoughtsOneCategory({
index,
category: selectedCategory,
}).then((result) => {
setThoughts(result.data);
setIsLoading(false);
}).catch((err) => {
console.log(err);
});
};
其工作原理是:如果您想查看选项文章,请单击“选项”,它会相应地呈现数据
我遇到了一个问题
如何修复双击菜单类别的要求?谢谢不用直接调用
getCollection
,只要类别发生变化,就可以使用useffect
调用它
比如:
useEffect(() => {
getCollection();
},[selectedCategory])
然后,您的重新计算类别将如下所示:
const recalculateCategory = (rowData) => {
setSelectedCategory(rowData);
};
每当第二个参数中的参数更改时,useffect
就会运行。您可能需要调整它们以适应您的用例,但是selectedCategory
肯定会在其中。您似乎没有包含足够的代码来诊断此问题。你能创建一个吗?特别是“重新计算类别(rowData)”,看看这是什么会很好does@StarshipladDev嘿我又加了一点code@jnpdx嘿我添加了更多的代码。抓取发生在云函数中,如果必要的话,我也可以添加它,但这在前端对我来说似乎是个问题,因为根据日志setSelectedCategory
可以正常工作,它是异步的,并且在调用getCollection
时不会完成。您应该使用useffect
运行getCollection
,或者将类别作为参数发送到getCollection
。你知道怎么做吗?
const recalculateCategory = (rowData) => {
setSelectedCategory(rowData);
};