【发布时间】:2023-04-03 03:18:02
【问题描述】:
我正在努力重新呈现平面列表。我正在尝试使用一个布尔值refreshToggle,它被输入extraData,在成功获取所需信息后更改。下面的代码成功获取数据并更改布尔值(因此更改为状态的功能更新,虽然可能是更好的做法,但似乎不是解决方案)(我已经检查过各种日志等是否发生这种情况),但是平面列表不会重新呈现。
export default function transactions({ navigation }: { navigation: any }) {
const [paymentsBtnActive, setPaymentsBtnActive] = React.useState<boolean>(navigation.getParam('Pressed') == 'Payments');
const [requestsBtnActive, setRequestsBtnActive] = React.useState<boolean>(navigation.getParam('Pressed') == 'Requests');
const [refreshToggle, setRefreshToggle] = React.useState<boolean>(false);
let data: any[] = [];
async function getRequests() {
const body = {
'phone': GLOBAL.userInfo['phone']
}
const options = {
method: 'POST',
headers: { 'Content-Type': 'application/json'},
body: JSON.stringify(body)
}
let requests = await fetch('http://3ef68e9c1352.ngrok.io/requests/user', options);
let requestsJSON = await requests.json();
data = requestsJSON['data'];
}
function renderItem(item: any) {
return (<Text>{item['item']['data']['date']}</Text>)
}
function listEmpty(){
return (<Text>Loading</Text>)
}
useEffect(() => {
(async function () {
await getRequests();
setRefreshToggle(!refreshToggle)
})()
}, [])
return (
<SafeAreaView style = {styles.container}>
<View style = {{flexDirection: 'row', justifyContent: 'center'}}>
<TouchableOpacity style = { paymentsBtnActive ? styles.paymentsBtnActive : styles.paymentsBtnInactive } onPress = { () => { setRequestsBtnActive(paymentsBtnActive)
setPaymentsBtnActive(!paymentsBtnActive) } } >
<Text style = { paymentsBtnActive ? styles.whiteText : styles.redText }>Payments</Text>
</TouchableOpacity>
<TouchableOpacity style = { requestsBtnActive ? styles.requestsBtnActive : styles.requestsBtnInactive } onPress = { () => { setPaymentsBtnActive(requestsBtnActive)
setRequestsBtnActive(!requestsBtnActive) } } >
<Text style = { requestsBtnActive ? styles.whiteText : styles.redText }>Requests</Text>
</TouchableOpacity>
</View>
<View style = {styles.summaryView}>
<FlatList
data={data}
renderItem={renderItem}
ListEmptyComponent = {listEmpty}
extraData = {refreshToggle}
/>
</View>
</SafeAreaView>
);
【问题讨论】:
标签: javascript typescript react-native expo