Today, the Navigate function is disallowed in the OnVisible for a screen. This is done to avoid looping between screens that could be very difficult to debug or even stop, possibly with the loss of unsaved data.
There are other ways in which the loop could be avoided. One is to throw a runtime error if the same screen is visited more than once in the course of evaluating a chain of formulas. With a different mitigation for loops in place, we could allow Navigate in OnVisible.