#javascript #reactjs #typescript #next.js #server-side-rendering
Вопрос:
я новичок в next.js, и столкнулся с одной проблемой, у меня есть несколько статических ссылок, которые перенаправляют на search.tsx в папке «страницы».
текущее поведение : теперь, если я нажму на какие-либо ссылки , сначала он будет ждать ответа API, а затем отобразит страницу поиска
ожидаемое : — сначала он должен отображаться, а затем ждать ответа API
поиск.tsx
export const getServerSideProps = async (props: any) => {
const apiResponse = await api.getProperties()
return {
props: {
...apiResponse,
},
}
}
const Search = (props: any) => {
</searchResult>
}
export default Search
Комментарии:
1. Вы должны переместить вызов API в useEffect() с зависимостью [], чтобы он выполнялся только после загрузки компонента.
Ответ №1:
getServerSideProps
запускается всякий раз, когда async
запрашивается страница , экспортирующая эту функцию, getServerSideProps
используется для SSR
, если вы хотите отобразить страницу, а затем fetch
данные, то вам придется сделать это в client
стороне, вы можете использовать useEffect
то, что можно использовать для извлечения данных, потому что оно выполняется только client
сбоку.
useEffect(()=>{
async function fetchData(){
// getch data fro API and set state
},
fetchData()
},[])
обратитесь сюда для получения дополнительной информации о getServerSideProps
Комментарии:
1. Вы забыли вызвать функцию fetchData();
2. Эй, спасибо за ваш ответ, и я понял, что вы пытаетесь сказать , я хотел бы знать, если мы удалим метод getServerSideProps() и используем useEffect (), какие недостатки мы увидим в реальном времени, я где-то читал, что getServerSideProps() полезен для SEO, и моя страница действительно интерактивна для пользователей, что означает, что ей нужно будет делать запросы API для каждого ДЕЙСТВИЯ пользователя под ним. итак, можете ли вы сказать мне, в чем недостатки,? это будет большим подспорьем