URL-адрес страницы изменяется, но доступ к содержимому на странице невозможен

#node.js #reactjs #react-hooks

#node.js #reactjs #реагирующие крючки

Вопрос:

Я создал API для выхода из системы:

 // Logout

router.get('/logout', (req, res) => {
    req.logOut();
    res.render('Some logout page.ejs');
});
 

Этот API в основном выходит из системы и отображает страницу выхода из системы.

Итак, по нажатию кнопки :

 <Link to={`/logout`}>Logout</Link> 
 

или

 <Button onclick={logoutfunction}/>

logoutfunction = () => {
return Redirect to = "/logout />
}
 

URL перенаправляет на :

  localhost:3001/logout
 

Но возвращает пустую страницу.

Но когда я нажимаю кнопку ввода на URL-адресе, он успешно выходит из системы, отображая страницу выхода.

Итак, как по нажатию кнопки не просто перенаправить на URL, но и получить доступ к API в React hooks?

Я пробовал разные решения, но, похоже, ни над одним из них не работает.

Дайте мне знать, если потребуются какие-либо другие подробности.

Ответ №1:

Я обнаружил, что вы используете компонент Link. Вы работаете с react? Если это так, страница выхода из системы должна находиться в маршрутизаторе браузера (react-dom-router), а не на маршрутизаторе сервера. То, что вы делаете, похоже на добавление маршрутизатора на сервер.

Даже если мой ответ сработает для вас, не вызывайте API таким образом, потому что приложение react так не работает.

Вместо этого вы можете получить доступ к своему API-серверу с помощью axios, fetch, какого-то вызова Ajax.

Комментарии:

1. на самом деле это только файл ejs. Но моя проблема в том, что он не доходит до api. Только URL-адрес изменен на / logout, но когда я перехожу к URL-адресу браузера и нажимаю enter, только я могу получить доступ к api

2. Отредактировал мой ответ, извините, что сбил вас с толку.

3. Вы правы, но когда я пытаюсь получить доступ к axios.get( /auth/logoutPage ).then((res) => {console.log(res.data) }), это выдает ошибку… слишком много перенаправлений …. но не доходит до api. также та же ошибка при использовании useeffect для вызова api

4. Можете ли вы поделиться частями вызова API? Вы управляете перенаправлением на стороне сервера? Если это так, прекратите это делать. вам лучше пойти с axios.get('/logout').then(res =>{ //do something with it history.push('/any/route' )})

5. API для выхода из системы:: router.get(‘/ logout’, (req, res) => { req.logOut(); }); Маршрут для вызова api: auth / logout В react я вызываю этот API как: axios.get( /auth/logout ).затем ((res) => {console.log(‘я внутри) }) Поэтому, когда я вызываю API как таковой, не должен ли запускаться API выхода из системы и выходить из этого сеанса. Или я делаю что-то не так?