Next.js: Router.push с состоянием - PullRequest
0 голосов
/ 15 марта 2019

Я использую next.js для перестройки приложения для рендеринга на стороне сервера.У меня есть кнопка, которая обрабатывает запрос поиска.

В старом приложении обработчик был таким:

search = (event) => {
    event.preventDefault();
    history.push({
        pathname: '/results',
        state: {
            pattern: this.state.searchText,
        }
    });
}

В классе результатов я мог бы получить дату состояния с этим.props.location.state.pattern.

Так что теперь я использую next.js:

import Router, { withRouter } from 'next/router'

performSearch = (event) => {
    event.preventDefault();
    Router.push({ pathname: '/results', state: { pattern: this.state.searchText } });
};

В классе результатов я использую

static async getInitialProps({req}) {
    return req.params;
}

IЯ не уверен, что мне нужно добавить это к моему server.js:

server.get('/results', (req, res) => {
    return app.render(req, res, '/results', req.params)
})

Однако функция getInitialProps выдает ошибку, потому что req не определено.Длинный текст, короткий вопрос: как передать состояние или параметры на другую страницу без использования параметров GET?

1 Ответ

3 голосов
/ 15 марта 2019

В next.js вы можете передать параметры запроса, подобные этому

Router.push({
    pathname: '/about',
    query: { name: 'Someone' }
})

, а затем на следующей странице (здесь, на странице /about) получить их следующим образом

this.props.router.query.name
...