For : expo --version 4.9.0 and "@react-navigation/bottom-tabs": "^5.11.11", "@react-navigation/drawer": "^5.12.5", "@react-navigation/native": "^5.9.4", "@react-navigation/stack": "^5.14.5",
Event listeners never get triggered after an event occurrences.
useFocusEffect(
React.useCallback(() => {
// Clearing all the pending information to be transferred..
OperationPending.emit("notPending");
// Listening on the refresh event
RefreshEventEmitter.addListener("refresh", () => {
sendMqttCmd("getTime");
});
// Listening for connection status on this event...
MqttConnection.addListener("status", () => {
// Setting the connection status
setIsConnected(getWSConnStatus());
});
let response = setTimeout(() => setNoResponse(true), 20000);
console.log("Just before event..");
// Creating a new listeners to execute on this event..
MqttEvents.addListener("freshDataAvailable", () => {
console.log("Executed event in getDevice");
// ----------------------------------------------
// Try to parse the got mqtt data object and if found error, handle
// it in catch section..
try {
// If length of the array to be rendered by flatlist is not 0
// then page is not refreshing any more!! Show the data..
if (getDeviceTime().hr !== undefined) {
console.log("Executed in getDevic");
// If time is readdy to fetched..
let mqttTime = getDeviceTime();
setDateTimeObj({
hourCount: Number(mqttTime.hr),
minCount: Number(mqttTime.min),
secCount: Number(mqttTime.sec),
});
// Also clear the timeout checking for no response as we got response
clearTimeout(response);
// Setting isPageRefreshing to false, let flatlist render the items
setTimeout(() => setIsPageRefeshing(false), 500);
}
} catch (error) {}
// Increasing the count, re-renders the screen, what we exactly want..
// setCount(count + 1);
});
// ----------------------------------------------
// Removing all the listeners, so that screen does not re-render after unmounting..
const unsubscribe = () => {
console.log("Also unsubscribed..");
clearTimeout(response);
clearInterval(shouldRenderInterval);
MqttConnection.removeAllListeners();
RefreshEventEmitter.removeAllListeners();
MqttEvents.removeAllListeners();
};
// ----------------------------------------------
// Returned function is called when screen is unmounted from display!!
return () => unsubscribe();
}, [
count,
MqttEvents,
OperationPending,
RefreshEventEmitter,
secCount,
isPageRefreshing,
])
);
On event triggering no console log is shown!!
Hopefully I'll get solution here, Regards..