#javascript #reactjs #redux #react-router #isomorphic-javascript
#javascript #reactjs #redux #react-маршрутизатор #изоморфный-javascript
Вопрос:
У меня есть URL, как показано ниже, с различными значениями строки запроса.
http://localhost:3000/product/?id=123amp;name=test
Я работаю над изоморфным приложением, используя redux, react. Итак, я запускаю действие, и могу ли я узнать, как я могу получить эти строковые значения запроса в файл действия redux?
export function getProductData(params) {
debug('Action Requested:' params);
return {
type: GET_PRODUCT_DATA,
promise: request.get(API_URL params.productId)
}
};
Потому что в действии я запускаю вызов API, и мне нужен этот идентификатор из значения строки запроса.
Комментарии:
1. Если вам нужно использовать ответ в действии, тогда отправка в обратном вызове ajax не выполняет обещание в действии. Но я не знаю, хотите ли вы это сделать.
2. Это изоморфное приложение, использующее это github.com/bananaoomarang/isomorphic-redux/tree/tutorial
3. Мой вопрос в том, как получить доступ к значениям строки запроса? если URL-адрес похож на localhost:3000/product/1234, он работает так, как мы кодируем в маршрутизаторе, например /product/:productid
Ответ №1:
Если вы используете React-router, продолжайте и получите к ним доступ через props.location.query
В конечном итоге будет выглядеть примерно так:
const Product = (props) =>
<div>
<button onClick={e => props.getProductData(props.location.query)}>Do Some Action</button>
</div>;
Ответ №2:
Параметры из URL-адреса в соответствии с вашими маршрутами передаются компоненту с помощью props.params
so, если у вас есть такие маршруты, как
<Route path="/product/:productid" component={Product} />
вы можете получить доступ к productid из Product
компонента, используя props, и передать его своему действию:
const Product = (props) =>
<div>
<button onClick={e => props.getProductData(props.params)}>Do Some Action</button>
</div>;
где props.params
хранятся все параметры, которые вы определяете в маршруте. в нашем случае значение productid
будет in props.params.productid
.
Комментарии:
1. является ли querystring также частью этого? если у вас есть только /product/, а URL-адрес отображается как /product/?id=1234
2. Этот ответ не затрагивает вопрос. Вообще не упоминается использование строки запроса.