В моем приложении есть страница для извлечения и отображения данных из API, DrawerItem
направляет пользователя на эту страницу. На этой странице есть три кнопки, каждая из которых при нажатии извлекает разные данные из API, по умолчанию, когда пользователь перенаправляется на эту страницу каждый раз, по умолчанию нажимается первая кнопка. При нажатии других кнопок данные на экране будут очищены и получены снова.
В этом ShowDataScreen.js
const ShowDataScreen = props => {
const [records, setRecords] = useState([]);
// call this every time when this screen is focused
useFocusEffect(
React.useCallback(()=>{
const fetchData = async(type) => {...fetch data and setRecords};
fetchData('1'); // get type 1 data
})
)
// call this when buttons are clicked
const fetchData = async(type) => {
if(type=='1'){ setTypeOneSelected(true); //set other false }
if(type=='2'){ setTypeTwoSelected(true); //set other false }
if(type=='3'){ setTypeThreeSelected(true); //set other false }
// get data from api and update the screen by setRecords
setRecords(result)
}
return(
<View>
<TouchableOpacity style={typeOneSelected?styles.selected: styles.notSelected} title="datatype1" onPress={fetchData('1')}> 1 </TouchableOpacity>
<TouchableOpacity style={typeTwoSelected?styles.selected: styles.notSelected} title="datatype2" onPress={fetchData('2')}> 2 </TouchableOpacity>
<TouchableOpacity style={typeThreeSelected?styles.selected: styles.notSelected} title="datatype3" onPress={fetchData('3')}> 3 </TouchableOpacity>
<FlatList data={records}>
// fetched data shown here
</FlatList>
</View>
)
}
Каждый раз, когда пользователь go на этой странице должен см. данные и стиль типа 1. При нажатии других кнопок экран должен обновиться соответствующим образом. Как правильно обновить данные и стиль?