I'll tell you the exact reason why it doesnt work,
when you console.log it just prints out whatever it is, if its a function, it describes as [Function] .
But JSON.stringify doesnt stringify a function , hence when in this.props,
navigation is an object, but inside it, it stores function , so key is a string but value is a function.
check this :
"navigation": {"addListener": [Function addListener], "canGoBack": [Function canGoBack], "dangerouslyGetParent": [Function dangerouslyGetParent], "dangerouslyGetState": [Function anonymous], "dispatch": [Function dispatch], "goBack": [Function anonymous], "isFocused": [Function isFocused], "navigate": [Function anonymous], "pop": [Function anonymous], "popToTop": [Function anonymous], "push": [Function anonymous], "removeListener": [Function removeListener], "replace": [Function anonymous], "reset": [Function anonymous], "setOptions": [Function setOptions], "setParams": [Function anonymous]},
You can see key is addListener , but value is [Function addListener] , so hence its a function, hence the whole navigation object becomes an empty object.
Hope its clear. feel free for doubts