我是Redux的新手,需要我的搜索帮助。
我需要使用一些api来获取搜索结果。这个api给了我以下端点:
POST /search/
GET /search/:id/results
所以我需要这样做:
我试图通过以下方式获取结果:
const FETCH_RESULTS_SUCCESS = 'FETCH_RESULTS_SUCCESS';
const initialState = {
results: []
};
export default function reducer(state = initialState, action) {
switch (action.type) {
case FETCH_RESULTS_SUCCESS:
return Object.assign([], state, { results: action.results });
default:
return state;
}
}
export const fetchResults = id => dispatch => {
return
fetch(`/search/${id}/results`, {
method: 'get',
'Content-Type': 'application/json'
})
.then(res => res.json())
.then(results => {
dispatch({
type: FETCH_RESULTS_SUCCESS,
results
})
})
export const createSearch = data => dispatch => {
return fetch('/search/', {
method: 'post',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(data => data.id)
.then(id => dispatch(fetchResults(id)))
}
问题在于它给我空洞的结果。但是如果我把一些真正的搜索ID(假设我们之前在db中有搜索)这样dispatch(fetchResults(15)
它会给我结果。
为什么以这种方式传递id并不起作用?
.then(data => data.id)
.then(id => dispatch(fetchResults(id)))
我的方法是否正常,或者您可能会建议我以其他方式使用此类API进行搜索?
P.S。代码可能有一些错别字。