Я использую response-router-redux (https: / /github.com/ReactTraining/react-router/tree/master/packages/react-router-redux )
Установлен с
npm install --save react-router-redux@next
Реализовано так:
<Route path='/resource/:id' component={Resource}/>
Я пытаюсь получить доступ к параметру для идентификатора в контейнере, например так:
const mapStateToProps = (state, ownProps) => {
console.log(ownProps)
return {...state.resource, id: ownProps.params.id}
}
Как показано в документах о реакции-маршрутизаторе-редуксе.
Я получаю сообщение о том, что ownProps.params не определено. Так что это работает:
const mapStateToProps = (state, ownProps) => {
return {...state.resource, id: ownProps.match.params.id}
}
Однако, когда я регистрирую ownProps, я обнаруживаю, что ownProps.match.params.id содержит идентификатор, который мне требуется.
Это изменение в реализации или я неправильно реализовал маршрут? Спасибо
2 ответа
npm install --save react-router-redux@next
С помощью приведенной выше команды вы, вероятно, установили альфа-версию react-router-redux
5 и используете ее с реакции-маршрутизатором v4.
Как они упоминают в https://github.com/reactjs/react-router-redux readme, react-router-redux
версия 5 в настоящее время активно разрабатывается в где-то еще.
Этот репозиторий предназначен для response-router-redux 4.x, который совместим только с response-router 2.x и 3.x
Следующая версия response-router-redux будет 5.0.0 и будет совместим с реакции-роутером 4.х. В настоящее время активно разработал там.
Таким образом, документация, на которую вы ссылаетесь, недействительна для используемой версии.
В вашей реализации нет ничего плохого, и вы можете продолжать получать доступ к params
через match
собственногоProps.
Я знаю, что это уже закрытый вопрос, но я думаю, что это была бы полезная информация для кого-то еще
Я использую ту же версию, и вот мое решение для получения параметров, когда у вас нет доступа к match
:
import { createMatchSelector } from 'react-router-redux';
const { params } = createMatchSelector({ path: '/resource/:id' })(state);
console.log(params.id);
Я использую его в redux-saga
, а не в компоненте. А для вашей ситуации было бы лучше использовать react-router
реквизиты и получать параметры от props.match.params.id
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.