Следующий js с django api рендеринг данных
Я работаю над фронт-эндом проекта и застрял на некоторое время. Я создал api с помощью django rest framework и пытаюсь подключиться к Nextjs front end. Данные должны отображаться на первой странице, поэтому я вызываю getInitialProps. Ниже приведен код
import styles from '../styles/Home.module.css';
import axios from 'axios';
const Home = ({ listings, error }) => {
if (error) {
return <div>An error occured: {error.message}</div>;
}
return (
<ul>
{listings.map((listing) => (
<li key={listing.address}>{listing.title}</li>
))}
</ul>
);
};
Home.getInitialProps = async (ctx) => {
try {
const res = await axios.get('http://127.0.0.1:8000/api/listings/?page=4');
const rep = await res.data;
console.log(rep.results);
listings = rep.results;
return { listings };
} catch (error) {
return { error };
}
};
export default Home;
В журнале консоли я получаю данные, которые имеют следующий формат:
[
{
index: 1734112,
user: 11233,
title: 'Classical style',
address: 'address 23, city , country',
bedrooms: '2',
bethrooms: '1',
price: '5803',
list_type: 'rent'
},
{
index: 1722303,
user: 32119,
title: 'Pangrati On the Lake',
address: 'address 28, city , country',
bedrooms: '1',
bethrooms: '1',
price: '4800',
list_type: 'rent'
}
]
Но я получаю ошибку, возникшую в браузере без указания ошибки.
А в консоли я получаю сообщение
next-dev.js?3515:32 Warning: Did not expect server HTML to contain the text node "listings is not defined" in <div>.
at div
at Home (webpack-internal:///./pages/index.js:50:26)
at MyApp (webpack-internal:///./pages/_app.js:38:27)
at ErrorBoundary (webpack-internal:///./node_modules/next/dist/compiled/@next/react-dev-overlay/client.js:8:20584)
at ReactDevOverlay (webpack-internal:///./node_modules/next/dist/compiled/@next/react-dev-overlay/client.js:8:23125)
at Container (webpack-internal:///./node_modules/next/dist/client/index.js:359:9)
at AppContainer (webpack-internal:///./node_modules/next/dist/client/index.js:793:26)
at Root (webpack-internal:///./node_modules/next/dist/client/index.js:915:27)
Я не уверен, в чем проблема, поэтому любая помощь будет очень признательна. Спасибо!
Вы присваиваете значение некоторой переменной listings = rep.results;, но эта переменная не была объявлена, вы не можете сделать это в строгом режиме (который, как я полагаю, является стандартным в этом случае)
Так что просто объявите его как const, и ошибка исчезнет:
const listings = rep.results